我创建了一个DrawerLayout侧边栏。当我点击侧边栏时,背景布局中的内容也会被点击。
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final DrawerLayout drawer = (DrawerLayout) this.findViewById(R.id.drawer_layout);
Button btn = (Button)findViewById(R.id.clickBtn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
drawer.openDrawer(Gravity.LEFT);
Toast.makeText(getApplicationContext(), "Button Clicked", Toast.LENGTH_SHORT).show();
}
});
}
}
这是我的布局:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- The main content view -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/clickBtn"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="hello pandora"/>
</RelativeLayout>
<!-- The navigation drawer -->
<TextView
android:id="@+id/left_drawer"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:text="hello world"
android:textColor="#fff"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
当我点击按钮时,抽屉滑动打开,在第3张图片中,当我点击侧边栏时,背景图层中的按钮(“hello pandora”)也会被点击。
我是否需要在DrawerLayout中添加任何内容以阻止背景布局中的触摸事件?
答案 0 :(得分:0)
我遇到了同样的问题。
在您的布局中添加android:clickable="true"
。
答案 1 :(得分:0)
您在那里显着地称为“导航抽屉”,实际上是TextView
-
它应该是android.support.design.widget.NavigationView
,
有一些header.xml
和一个menu.xml
被夸大,您必须在其中放置子节点。
没有DrawerLayout
的{{1}} ...“可能表现异常”。
在Android上,可以启用“显示布局边界”选项,就像在Android Studio中一样,有一个Layout Inspector,这两者都有助于了解异常行为的原因。
答案 2 :(得分:-1)
我自己修好了,但方式不好。我为导航抽屉布局编写了一个onClickListener(这里是TextView),并在onClick()方法中将其留空。这样就可以了。