2016-05-02 112 views
2

我正在開發一個android應用程序,它需要DrawerLayout低於工具欄。我已經實現了這個功能,但是即使在刪除標題之後,仍可以看到NavigationView的標題,即Status Bar 24dp。 有沒有辦法去除?Android隱藏NavigationView標題

Problem

XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <include 
     layout="@layout/app_bar_home" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <android.support.v4.widget.DrawerLayout 
     android:layout_marginTop="?android:attr/actionBarSize" 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     > 

     <android.support.design.widget.NavigationView 
      android:paddingBottom="0dp" 
      android:id="@+id/nav_view" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      app:headerLayout="@null" 
      app:menu="@menu/activity_home_drawer"/> 

    </android.support.v4.widget.DrawerLayout> 
</RelativeLayout> 

回答

1

從navigationview刪除app:headerLayout="@null"

像這樣膨脹onCreate()的headerlayout,然後設置可見性消失。

View headerView= LayoutInflater.from(this).inflate(R.layout.drawer_header, null); 
navigationView.addHeaderView(headerView); 
navigationView.getHeaderView(0).setVisibility(View.GONE); 
+0

已經嘗試過,沒有運氣。順便說一下,你會看到抽屜裏的頂部灰色條。那就是問題所在。我怎樣才能讓它變成半透明的? – Max

+0

是否將標題佈局的背景顏色更改爲透明? –

+0

它會變得不同嗎?即使我們正在將可見性設置爲「已逝」? – Max

0

定義在菜單組,然後使用隱藏組:

navigationView.getMenu().setGroupVisible(groupPosition, false); 

此外,刪除headerLayout attribue。

1

試試這個:

View headerView = navigationView.inflateHeaderView(R.layout.nav_header_home); 

headerView.setVisibility(View.GONE); 

和刪除行的應用程序:從你的XML headerLayout = 「@空」。

1

也可以嘗試這樣的,

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<!-- Framelayout to display Fragments --> 
<FrameLayout 
    android:id="@+id/frame_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<!-- Listview to display slider menu --> 
<ListView 
    android:id="@+id/list_slidermenu" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:choiceMode="singleChoice" 
    android:divider="@color/list_divider" 
    android:dividerHeight="1dp"  
    android:background="@color/list_background"/> 

1

大概是因爲高度不夠。爲什麼不使用wrap_contentlayout="@layout/app_bar_home"並將android:layout_below添加到DrawerLayout?或者爲了保持簡單,在這種情況下您也可以使用LinearLayout。這會更容易:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <include 
     layout="@layout/app_bar_home" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <android.support.v4.widget.DrawerLayout 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     > 

     <android.support.design.widget.NavigationView 
      android:paddingBottom="0dp" 
      android:id="@+id/nav_view" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      app:headerLayout="@null" 
      app:menu="@menu/activity_home_drawer"/> 

    </android.support.v4.widget.DrawerLayout> 
</LinearLayout>