Android:单击DrawerLayout侧边栏时单击后台布局

时间:2014-06-24 12:13:42

标签: android

我创建了一个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”)也会被点击。 enter image description here

我是否需要在DrawerLayout中添加任何内容以阻止背景布局中的触摸事件?

3 个答案:

答案 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()方法中将其留空。这样就可以了。