我对协调器布局(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;
}
}
但不幸的是,结果 - 点击按钮仍然有效,按钮没有与稀松布颜色重叠。
希望有人知道我做错了什么。感谢。