2016-11-14 198 views
1

我創建了一個導航抽屜。我想在狀態欄下面顯示抽屜。它可以正常工作。但抽屜在版本5上的狀態欄上方打開, above.I要設置的抽屜像第二image.How設置下面狀態欄的動作(即)的所有導航抽屜version.`設置在android中的操作欄上的抽屜導航

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="close" 
    > 

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

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="start" 

     android:fitsSystemWindows="true" 

     app:itemTextColor="@color/black" 
     app:itemIconTint="@color/black" 
     android:background="@drawable/menubg" 
     app:headerLayout="@layout/emp_header" 
     app:menu="@menu/activity_emp_drawer" /> 


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

` drawer opens above action bar in versaion 5+ mobiles

image2

enter image description here

+0

這是你要補充的嗎? http://stackoverflow.com/a/36587544/5188159 –

+0

沒有不喜歡,我需要打開狀態欄下面的抽屜。你的例子像抽屜打開下面的操作欄 –

+0

啊,它讓我看到mm –

回答

0

嘗試刪除android:fitsSystemWindows="true"到您的DrawerLayout或使它像android:fitsSystemWindows="false"一樣虛假,可能這應該適合您。

+0

我已經嘗試過,但不能正常工作 –

+0

,適合我! –

0

這種替換代碼:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout  
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:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="start"> 

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

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:itemTextColor="@color/black" 
    app:itemIconTint="@color/black" 
    android:background="@drawable/menubg" 
    app:headerLayout="@layout/emp_header" 
    app:menu="@menu/activity_emp_drawer" /> 

0

我所做的是找到狀態欄的高度和偏移它。

private NavigationView mNavView; 
private View mHeaderView; 
//... 
mNavView = (NavigationView) findViewById(R.id.navView); 
//... 
mHeaderView = mNavView.getHeaderView(0); 
//... 
LinearLayout mHeaderLayout = (LinearLayout) HeaderView.findViewById(R.id.headerLayout); 
//.. 
mHeaderLayout.setPadding(0, getStatusBarHeight(), 0, 0); 

用於獲取狀態欄高度的功能是:

public int getStatusBarHeight() { 
     int result = 0; 
     int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); 
     if (resourceId > 0) { 
      result = getResources().getDimensionPixelSize(resourceId); 
     } 
     return result; 
} 

希望有所幫助。

Ps。這一發現狀態欄的高度我知道了別人很久以前的某個地方......

+0

你的答案工作良好,但有一點是如果我爲headerlayout設置填充意味着一些文本移動inside.so,我已經爲mNavView設置填充。 –

+0

之後,它工作正常,但我的預期,但灰色顯示在狀態欄的頂部。是否有任何可能性設置在mNavView動態邊距,而不是填充 –

+0

我認爲如果你移動邊距,它會暴露您看到的灰色背景。所以我認爲填充比邊緣更好。 順便說一句,你是什麼意思的一些文本被移動到裏面? – Aung

0

android:fitsSystemWindows="true"emp_header您在app:headerLayout="@layout/emp_header"