CoordinatorLayout.Behavior - blocksInteractionBelow()不起作用,getScrimOpacity()不重叠按钮

时间:2018-03-27 07:34:27

标签: android android-coordinatorlayout

我对协调器布局(link to post)的这一特性非常鼓舞:

  

还有另一个更严厉的触摸拦截:阻塞   所有的互动。只需返回true   blocksInteractionBelow()就是这样。当然,你可能想要   有一些视觉信号,相互阻止(以免他们   认为应用程序完全坏了 - 这就是默认的原因   blocksInteractionBelow()的功能实际上依赖于值   getScrimOpacity() - 返回一个非零值,这里将绘制一个   在View上叠加颜色(颜色为getScrimColor(),默认为   黑色)并一举禁用触摸交互。方便。

我有一项活动

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a_main);
    }

    public void click(View view) {
        Toast.makeText(this, "Go", Toast.LENGTH_SHORT).show();
    }

}

布局

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Go"
        android:onClick="click"
        android:elevation="0dp"
        />

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="200dp"
        android:background="#409"
        app:layout_behavior=".B"
        android:elevation="16dp"
        />

</android.support.design.widget.CoordinatorLayout>

和行为

public class B extends CoordinatorLayout.Behavior<View> {

    public B(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public float getScrimOpacity(CoordinatorLayout parent, View child) {
        return .8f;
    }

    @Override
    public int getScrimColor(CoordinatorLayout parent, View child) {
        return Color.RED;
    }
}

但不幸的是,结果 - 点击按钮仍然有效,按钮没有与稀松布颜色重叠。

enter image description here

希望有人知道我做错了什么。感谢。

0 个答案:

没有答案