Drawerlayout拦截所有触摸事件

时间:2015-10-07 17:52:34

标签: android navigation-drawer drawerlayout

我的抽屉布局正在拦截所有触摸事件。我需要帮助找出如何点击它下面的元素。这是我的drawerLayout的设置方式

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/frag_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <RelativeLayout
        .... some code ...

    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>

然后我在另一个布局中引用这个布局,比如这个

    

    <!-- elements inside of this relative layout 
    are unclickable because the drawer layout below 
    intercepts all clicks. If I place the drawer above 
    this view the drawer is beneath all the elements 
    in the relative layout, however, I am able to do 
    my clicks as expected. What I am doing incorrectly? -->

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!-- ... some code * the buttons here are what 
        I want to be clickable when drawer is closed. 
        I currently cannot reach them ... -->

    </RelativeLayout>

 <include layout="@layout/drawer" />

</FrameLayout>

我在抽屉的xml中添加了android:clickable="false"android:focusable="false"。我以编程方式记录了点击次数,它是ID为“drawer_layout”的实际抽屉拦截所有点击。使其无法点击不起作用,它仍然是可点击的。我也尝试将可见性设置为INVISIBLE和GONE,这些也不是可行的解决方案。

如何让抽屉拉出允许点击它到下面的元素?提前谢谢!

2 个答案:

答案 0 :(得分:1)

通过将clickable和focusable设置为false,我认为您也禁用了单击布局中的视图。从抽屉布局中删除这些选项。 尝试为抽屉布局中的容器设置android:clickable =“true”和android:focusable =“true”。

答案 1 :(得分:1)

我想出来了。我最后将我的主要布局添加到抽屉,这与我以前做的相反,因为在我将抽屉添加到主布局之前。所以我做的改变是

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/frag_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <include layout="@layout/main_layout" />
    </FrameLayout>

    <RelativeLayout
        .... some code ...

    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>

如果有其他人遇到此问题则视图层次结构冲突。您不能将抽屉放在要与之交互的元素之上。如果您有需要与之交互的按钮或其他小部件,则应将其包含在抽屉布局中。我希望这可以帮助其他人。