我有DrawerLayout
其中第二個子標記爲NavigationView
,它包含NavigationDrawer
的內容。NavigationView標題與內容子標記重疊
當我啓動該項目時,打開抽屜,NavigationView
內容與爲NavigationView
設置的標題視圖重疊。
的activtiy是建立像以下:
<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>
在活動,我編程設置標頭視圖。我必須這樣做,因爲在應用程序生命週期中,nav的頭部和主體將會改變。
LayoutInflater inflator = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout headerView = new RelativeLayout(this);
View mHeadernav = inflator.inflate(resourceViewId,headerView);
mNavigationView.addHeaderView(mHeadernav);
的NavigationView
孩子的內容被以同樣的方式加入,調用RelativeLayout
對象addView(View)
。
解決方法:爲了繞過這個問題,我在資源中設置了一個值(@dimen/header_view_height
),我用它來給出我的標題視圖的高度,並將其作爲NavigationView
子內容的marginTop。
我在想的另一個解決方法是創建一個獨立的視圖並將其用作標題視圖。在這種情況下,RelativeLayout
(NavView的孩子)將有兩個孩子,第一個是標題,第二個是內容。
我知道NavigationView
作品像FrameLayout
,但有一種方法,使使用自定義視圖LinearLayout
sequantially押喜歡的內容?
屏幕截圖請 –
您是否考慮過只爲您的抽屜使用垂直'LinearLayout'?看起來你並沒有像使用'NavigationView'來處理任何不容易用'LinearLayout'複製的東西。 –