7

मेरे पास एक ऐसी गतिविधि है जो समर्थन लाइब्रेरी से ड्रॉवरलाउट और नेविगेशन व्यू होस्ट करती है। मैं नेविगेशन दृश्य में हेडर लेआउट सेट कर रहा हूं और मैं नेविगेशन हेडर ऊंचाई को "wrap_content" होना चाहता हूं। तो जब मैं ऊंचाई को "wrap_content" पर सेट करता हूं तो हेडर लेआउट स्टेटस बार के पीछे जाता है।एंड्रॉइड में नेविगेशन व्यू में स्टेटसबार पैडिंग सेट करना

परिणाम मैं चाहता हूं कि नेविगेशन ड्रॉवर को स्टेटस बार के पीछे खींचा जाना चाहिए लेकिन नेविगेशन हेडर को स्टेटसबार ऊंचाई से नीचे धक्का दिया जाना चाहिए।

नीचे जो मुझे मिल रहा है उसका स्क्रीनशॉट नीचे दिया गया है। स्टेटस बार के पीछे जा रहे "साइन इन करें" बटन पर ध्यान दें।

screenshot

गतिविधि लेआउट

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/nav_drawer" 
android:fitsSystemWindows="true"> 

<android.support.design.widget.CoordinatorLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/view_pager" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"></android.support.v4.view.ViewPager> 
    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

    <include layout="@layout/include_toolbar"/> 

     <android.support.design.widget.TabLayout 
      app:theme="@style/ThemeOverlay.AppCompat.Dark" 
      style="@style/MyCustomTabLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/tabs" 
      /> 

    </android.support.design.widget.AppBarLayout> 

</android.support.design.widget.CoordinatorLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    app:headerLayout="@layout/nav_header" 
    app:menu="@menu/menu_navigation" 
    android:fitsSystemWindows="true" 
    android:layout_gravity="start"/> 

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

नेविगेशन देखें हैडर लेआउट

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimaryDark" 
      android:padding="16dp" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark" 
      android:orientation="vertical" 
      android:fitsSystemWindows="true" 
      android:gravity="bottom"> 

<TextView 
    android:visibility="gone" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/text_user_name" 
    android:textAppearance="@style/TextAppearance.AppCompat.Body1"/> 

<TextView 
    android:visibility="gone" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/text_email" 
    android:textAppearance="@style/TextAppearance.AppCompat.Body2"/> 

<Button 
    android:id="@+id/button_sign_in" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Sign In"/> 

</LinearLayout> 

मैं एक समाधान के लिए StackOverflow के माध्यम से खोज की है, लेकिन यह नहीं मिल सका। तो किसी ने कृपया कुछ प्रकाश डाला। अग्रिम में धन्यवाद।

+0

पर कोई भाग्य इस? – swooby

उत्तर

7
<android.support.design.widget.NavigationView 
android:id="@+id/navigation_view" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
app:headerLayout="@layout/nav_header" 
app:menu="@menu/menu_navigation" 
android:fitsSystemWindows="false" 
android:layout_gravity="start"/> 

एंड्रॉयड: fitsSystemWindows = "false"

और CoordinatorLayout => एंड्रॉयड: fitsSystemWindows = "false"

+0

नमस्ते यह अच्छा होगा अगर आप अपने समाधान के आसपास और स्पष्टीकरण प्रदान कर सकें। (टिप: लोगों को भी आपके समाधान को स्वीकार करने की अधिक संभावना है;)) – bobylito

+7

इससे दराज को स्टेटसबार के नीचे खींचा जाएगा, जो वांछित व्यवहार नहीं है। – SpaceBison

+0

@ स्पेसबिसन यह * वांछित व्यवहार है। यह * मानक * व्यवहार भी है। मुद्दा यह है कि, op * स्टेटसबार के नीचे * बटन * प्रदर्शित नहीं होना चाहता है। उदाहरण के लिए, इसके ऊपर पैडिंग जोड़कर। –

6

सम्भावित समाधान का उपयोग करने के dimens.xml है:

एपीआई के लिए हैडर 1 9 और नीचे: res/मान /dimens.xml

0 एपीआई 21 के लिए और ऊपर

हैडर: res/मान-V21 /dimens.xml

<resources> 
    .... 

    <dimen name="navigation_header_height">174dp</dimen> 
    <dimen name="navigation_header_top_padding">24dp</dimen> 
</resources> 

उदाहरण हैडर: res/लेआउट /nav_header.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="240dp" 
       android:layout_height="@dimen/navigation_header_height" 
       android:paddingTop="@dimen/navigation_header_top_padding" 
       android:background="@color/primary" 
       android:orientation="vertical"> 

    // Header's views goes here 
</LinearLayout> 
+0

यह स्वीकार्य उत्तर होना चाहिए। एपीआई 21 और ऊपर, नेविगेशन ड्रॉवर स्टेटस बार पर दिखाया जा सकता है, इसलिए साइन इन बटन पर एक अतिरिक्त शीर्ष पैडिंग पर विचार किया जाना चाहिए। लेकिन चूंकि एपीआई -21 पर नेविगेशन ड्रॉवर हमेशा स्टेटस बार के नीचे दिखाया जाता है, कि शीर्ष पैडिंग को जोड़ा नहीं जाना चाहिए। – IRPdevelop

+0

अच्छा समाधान, सरल और प्रभावी। – Lancelot

+1

मुझे नहीं लगता कि यह एक अच्छा पर्याप्त समाधान है। सबसे पहले, मानक स्थिति बार ऊंचाई 25 डीपी 24 डीपी नहीं है। दूसरा, यह समाधान सभी डिवाइस स्थितियों को कवर नहीं कर सकता है, कुछ उपकरणों में एक मानक मानक स्थिति बार हो सकती है या यहां तक ​​कि कोई स्टेटस बार नहीं है। – Loyea

संबंधित मुद्दे