如何以编程方式打开和关闭layout_behavior行为?

Nou*_*vay 3 android android-layout floating-action-button android-coordinatorlayout

让我们假装简单的简单案例.我有一个FloatingActionButton,我在其上添加了layout_behavior.我需要能够以编程方式启用或禁用该行为.我怎么做?我最初通过xml添加行为

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/fab_margin"
    android:src="@drawable/mine"
    app:backgroundTint="@color/colorPrimary"
    app:layout_anchor="@id/default_message"
    app:layout_anchorGravity="end|bottom"
    app:layout_behavior=“mywidget.ScrollingFABBehavior"/>
Run Code Online (Sandbox Code Playgroud)

ian*_*ake 10

您可以检索LayoutParams通道

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
CoordinatorLayout.LayoutParams params = 
    (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
Run Code Online (Sandbox Code Playgroud)

那么你可以直接用setBehavior()设置行为:

params.setBehavior(null);
Run Code Online (Sandbox Code Playgroud)

或者获取您的行为实例并调用一个方法让它自行禁用(您所做的):

ScrollingFABBehavior behavior =
    (ScrollingFABBehavior) params.getBehavior();
// This is a method you write
behavior.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)