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

时间:2015-04-07 06:52:11

标签: android listview slidingdrawer drawerlayout

我创建了Activity并使用DrawerLayout添加了侧边菜单。在DrawerLayout内,我添加了ListView,其中包含内容。到目前为止一切都很好我想通过添加具有暗淡背景的自定义视图为抽屉添加暗淡效果,但它似乎无法正常工作。

以下是活动的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>


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

1 个答案:

答案 0 :(得分:3)

这是因为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>