我有一个DrawerLayout
,其中第二个孩子是NavigationView
,其中包含NavigationDrawer
的内容。
当我启动项目时,打开抽屉,NavigationView
内容与NavigationView
的标题视图集重叠。
活动建立如下:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_main_layout">
<android.support.design.widget.CoordinatorLayout>
<!-- contents of activity-->
</android.support.design.widget.CoordinatorLayout>
<!-- nav drawer -->
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view_drawer"
android:orientation="vertical"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start">
<RelativeLayout
android:id="@+id/drawer_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/navigation_drawer_header_height"
></RelativeLayout>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
在活动中,我以编程方式设置标题视图。我必须这样做,因为导航的标题和正文将在应用程序生命周期中发生变化。
LayoutInflater inflator = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout headerView = new RelativeLayout(this);
View mHeadernav = inflator.inflate(resourceViewId,headerView);
mNavigationView.addHeaderView(mHeadernav);
NavigationView
子项的内容以相同的方式添加,在addView(View)
对象上调用RelativeLayout
。
解决方法:为了绕过该问题,我在资源(@dimen/header_view_height
)中设置了一个值,我用它来给出我的标题视图的高度,并作为NavigationView
子项内容的marginTop。
我正在考虑的另一个解决方法是创建一个独立的视图,并像标题视图一样使用它。在这种情况下,RelativeLayout
(NavView的子节点)将有两个子节点,第一个将是标题,第二个将是内容。
我知道NavigationView
的工作方式与FrameLayout
类似,但是有一种方法可以使用自定义视图在LinearLayout
中对内容进行基本上的放样吗?
答案 0 :(得分:0)
不要将ViewGroup
放在NavigationView
内并夸大标题,请尝试以下操作:
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/background_color"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/menu_drawer_items"/>
然后,您可以在drawer_header.xml
布局文件中定义标题。