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>
我创建了一个 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>