टूलबार स्थिति पट्टी के नीचे अतिव्यापी


168

मैं अपनी गतिविधि में appcompat v21 टूलबार रखना चाहता हूं। लेकिन मैं जिस टूलबार को लागू कर रहा हूं वह स्टेटस बार के नीचे ओवरलैप हो रहा है। मेरे द्वारा यह कैसे किया जा सकता है?

अतिव्यापी टूलबार

यहाँ गतिविधि लेआउट xml है:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

टूलबार दृश्य:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

थीम शैली:

<style name="AppTheme" parent="MaterialNavigationDrawerTheme.Light.DarkActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

आपने Themeअपने एप्लिकेशन को कैसे अनुकूलित किया ? उन्हें पोस्ट करें।
साइलेंटनाइट नाइट

में CoordinatorLayoutआप यह कोशिश कर सकते हैं: stackoverflow.com/a/47906087/2201814
MHSFisher

उन लोगों के लिए जो androidx.coordinatorlayout.widget.CoordinatorLayout के साथ समस्या का सामना कर रहे हैं, क्योंकि रूट दृश्य को Android सेट करना चाहिए: fitSystemWindows = "false"। इसने मेरे लिए काम किया ... जैसा कि नीचे
SOO में

जवाबों:


273

android:fitsSystemWindows="true"अपने लेआउट के मूल दृश्य में उपयोग करें (LinearLayout आपके मामले में)। और ए android:fitsSystemWindowsहै

सिस्टम विंडो जैसे स्टेटस बार के आधार पर व्यू लेआउट को समायोजित करने की आंतरिक विशेषता। यदि सही है, तो सिस्टम विंडो के लिए स्थान छोड़ने के लिए इस दृश्य के पैडिंग को समायोजित करता है। केवल तभी प्रभावी होगा जब यह दृश्य एक गैर-एम्बेडेड गतिविधि में हो।

बूलियन मान होना चाहिए, या तो "सच" या "गलत"।

यह एक संसाधन (फ़ॉर्म में "@ [पैकेज:] प्रकार: नाम") या थीम विशेषता (फ़ॉर्म में "? [पैकेज:] [प्रकार:] नाम") का संदर्भ भी हो सकता है, जिसमें इस प्रकार का मान होता है ।

यह वैश्विक विशेषता संसाधन प्रतीक फिट बैठता है सिस्टमविंडोज से मेल खाता है।


22
@ AimanB आप इसे थीम पर सेट करके विश्व स्तर पर सेट कर सकते हैं <item name="android:fitsSystemWindows">true</item>
समीर


9
हमारे द्वारा एंड्रॉइड में फिट किए जाने के बाद भी यह समस्या आएगी: रूट लेआउट में “SystemWindows = ”true”, अगर आपकी शैली में <आइटम का नाम = "android: statusBarColor"> @ एंड्रॉइड: रंग / पारदर्शी </ आइटम> है। सिर्फ उन लोगों के लिए उल्लेख किया गया है जो इस प्रश्न को पढ़ रहे हैं।
सकीकर हुसैन

3
मैं एक ही मुद्दा है और Android: fitSystemWindows = "सच" मेरे लिए काम नहीं कर रहा हूँ। किसी को भी इस पोस्ट कृपया समाधान है।
जतिन

1
इस जवाब ने मेरी समस्या को ठीक कर दिया। लेकिन अब मुझे 0 गद्दी के साथ सभी एंड्रॉइड टोस्ट मिलते हैं!
kds23

18

बस इसे v21 / styl.xml फ़ाइल में सेट करें

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="android:statusBarColor">@color/colorPrimaryDark</item>

और सुनिश्चित हो

 <item name="android:windowTranslucentStatus">false</item>

1
अगर आपके पास ऐप जैसा कुछ है: Layout_behavior = "@ string / appbar_scrolling_view_behavior", इसे हटा दें! @ द हंटर
ज़हरा। 11

सेट <आइटम का नाम = "android: windowTranslucentStatus"> false </ item>
Zahra.HY

10

मेरे लिए, समस्या यह थी कि मैंने एक उदाहरण से कुछ कॉपी किया और उपयोग किया

<item name="android:windowTranslucentStatus">true</item>

बस इस समस्या को दूर मेरी समस्या है।


10

मेरे जवाब में से किसी ने भी मेरे लिए काम नहीं किया, लेकिन android:fitSystemWindowsरूट व्यू पर सेट करने के बाद आखिरकार यह काम किया (मैंने इन्हें स्टाइल v21 में सेट किया):

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">false</item>

सुनिश्चित करें कि आपके पास निम्न पंक्ति नहीं है जैसा कि डिफ़ॉल्ट रूप से एएस डालता है:

<item name="android:statusBarColor">@android:color/transparent</item>

6

मेरे जवाब में से किसी ने भी मेरे लिए काम नहीं किया, लेकिन आखिरकार मैंने सेट होने के बाद क्या काम किया:

android:fitsSystemWindows="false"

पैरेंट एक्टिविटी लेआउट फाइल में यह कई जगहों पर सुझाया नहीं गया है, लेकिन यह मेरे लिए काम करता है और मेरा दिन बचाता है


मेरे लिए यह तब भी काम आया जब लेआउट में मेरा मूल दृश्य एक androidx.coordinatorlayout.widget.CoordinatorLayoutप्रकार था ।
फहीम एज़ानी

5

मैंने नीचे दी गई सभी पंक्तियों को /res/values-v21/styles.xml से हटा दिया है और अब यह ठीक काम कर रही है।

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="android:statusBarColor">@android:color/transparent</item>


 <item name="windowActionBar">false</item>
 <item name="android:windowDisablePreview">true</item>

 <item name="windowNoTitle">true</item>

 <item name="android:fitsSystemWindows">true</item>

0

Google डॉक्स के अनुसार, हमें ऐप थीम में फ़िट्स सिस्टेमवॉश विशेषता का उपयोग नहीं करना चाहिए, इसका उद्देश्य लेआउट फ़ाइलों में उपयोग करना है। थीम में उपयोग करने से टोस्ट संदेशों में समस्या हो सकती है।

यहाँ समस्या की जाँच करें और यहाँ हुई समस्या का उदाहरण है

<item name="android:fitsSystemWindows">true</item>

सही तरीके का उपयोग करने का उदाहरण और जो खिड़की के साथ ठीक काम करता है ।

<?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:fitsSystemWindows="true"

android:layout_width="match_parent"
android:layout_height="match_parent"
> 


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

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    android:background="@color/white"
    android:animateLayoutChanges="true"
    app:headerLayout="@layout/navigation_drawer_header"
    app:menu="@menu/navigation_drawer_menu" />

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

0

शैली या शैली से नीचे की रेखाएँ निकालें (21)

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowTranslucentStatus">false</item>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.