1

我有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押喜歡的內容?

+0

屏幕截圖請 –

+0

您是否考慮過只爲您的抽屜使用垂直'LinearLayout'?看起來你並沒有像使用'NavigationView'來處理任何不容易用'LinearLayout'複製的東西。 –

回答

0

而不是把一個ViewGroupNavigationView的內部和充氣頭的,試試這個:

<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佈局文件定義你的頭。

+0

我不能這樣做。我必須以編程方式加載正文和標題,因爲我需要在每個活動中更改它 – MikeKeepsOnShine