Android - 将自定义视图添加到 ListView(以在侧面菜单中获得暗淡效果)

Android - Add a custom View to a ListView (to gain dim effect in a side menu)

我创建了一个 Activity 并使用 DrawerLayout 添加了一个侧边菜单。在这个 DrawerLayout 中,我添加了一个 ListView 来存放内容。到目前为止一切都很好。我想通过添加带有昏暗背景的自定义视图来为抽屉添加昏暗效果,但似乎不起作用。

这是 activity 的 XML 布局:

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

    <!-- The first child in the layout is for the main Activity UI-->

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context=".MainActivity"
        android:background="#ffffffff">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:text="SOME CONTENT"
            android:textSize="24sp"
            android:gravity="center"
            android:layout_marginTop="100dp"/>
    </RelativeLayout>

    <!-- Side navigation drawer UI -->
    <!-- this is the custom view that i want to add in order to dim the side menu -->
    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#73000000"
        android:id="@+id/view1"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


    <ListView
        android:id="@+id/navList"
        android:layout_width="270dp"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:background="@drawable/splash_background"/>

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


现在,它只会使 activity 的内容变暗,而不是抽屉本身。

这是因为 DrawerLayout 将其最后一个视图作为抽屉。所以你的最后一个视图是 ListView 并且暗视图留给了内容。如果你想同时制作抽屉的 ListView 和暗淡的 View 部分,你必须将它们包裹在 ViewGroup 中。尝试创建一个包含这两个视图的 RelativeLayout。像这样

<RelativeLayout
  android:id="@+id/drawerContainer"
  android:layout_width="270dp"
  android:layout_height="match_parent"
  android:layout_gravity="left|start">
  <View
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="#73000000"
     android:id="@+id/view1"
     android:layout_alignParentTop="true"
     android:layout_alignParentLeft="true"
     android:layout_alignParentStart="true" />
  <ListView
     android:id="@+id/navList"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/splash_background"/>
</RelativeLayout>