导航抽屉阻止活动上的其他按钮

时间:2014-11-09 17:52:56

标签: android xml user-interface button navigation-drawer

我正在处理我的应用程序的UI,当我实现导航抽屉时,我遇到了问题。正如您所看到的here,我有一些按钮来管理我的媒体播放器,这些按钮在我实现导航抽屉时没有响应我的点击(在没有导航抽屉的情况下正常工作)。

我认为问题来自我的XML文件,因为当我在Java中删除实现时没有变化。

以下是我的XML表格:

main_activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MyActivity">

    <fragment
        android:id="@+id/fragments"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.example.ilan.myapplication.fragments.FragmentHome" >
    </fragment>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Buffering"
        android:id="@+id/tV_Buffering"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true" />

    <include
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_weight="1"
        layout="@layout/player_controls"
        android:layout_alignParentBottom="true"/>

    <include
        layout="@layout/navigation_drawer_main_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

请注意,我将导航抽屉放在最后,以使其涵盖所有活动。

navigation_drawer_main_layout.xml

<?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/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#FFFFFF"/>
</android.support.v4.widget.DrawerLayout>

player_controls.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/blue">

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/button_play_pause"
            android:layout_toStartOf="@+id/tV_Buffering"
            android:background="@drawable/bouton_play"
            android:layout_centerInParent="true"
           />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Stop"
            android:id="@+id/button_stop"
            android:layout_toRightOf="@id/button_play_pause"
            android:layout_centerInParent="true"
            android:layout_marginLeft="20dp"/>
</RelativeLayout>

好吧,如果有人知道它来自哪里会很棒,谢谢!

1 个答案:

答案 0 :(得分:0)

  

要使用DrawerLayout,请将主要内容视图定位为第一个具有match_parent宽度和高度且没有layout_gravity的子视图。在主内容视图后添加抽屉作为子视图,并相应地设置layout_gravity。抽屉通常使用match_parent作为具有固定宽度的高度。查看Google有关DrawerLayout的文档:https://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html

您的主要内容应放在DrawerLayout中,而不是在RelativeLayout中包含DrawerLayout。

对于您的情况,您可以尝试以这种方式实施:

main_activity.xml

<?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">

    <RelativeLayout
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MyActivity">

        <fragment
            android:id="@+id/fragments"
            class="com.example.ilan.myapplication.fragments.FragmentHome"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </fragment>


        <TextView
            android:id="@+id/tV_Buffering"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:text="Buffering"
            android:textAppearance="?android:attr/textAppearanceSmall"/>

        <include
            layout="@layout/player_controls"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_alignParentBottom="true"
            android:layout_weight="1"/>

    </RelativeLayout>

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

    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#FFFFFF"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"/>
</android.support.v4.widget.DrawerLayout>