android क्या मैं केवल स्थिति पट्टी के लिए FLAG_LAYOUT_NO_LIMITS सेट कर सकता हूं?




android-5.0-lollipop android-statusbar (8)

मुझे पारदर्शी स्टेटस बार बनाने की जरूरत है। मैं getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) का उपयोग कर रहा हूं और यह स्थिति पट्टी बनाता है जैसा मैं चाहता हूं। लेकिन यह नेविगेशन बार को भी प्रभावित करता है: यह पारदर्शी हो गया और getWindow().setNavigationBarColor(Color.BLACK) कुछ भी नहीं करते हैं।

क्या केवल पारदर्शी स्थिति पट्टी बनाने का तरीका है और नेविगेशन बार नहीं है?


getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

बस ऊपर के झंडे ने मेरे लिए काम किया। नेविगेशन बटन दिखाई देते हैं, स्टेटस बार और एक्शन बार छिपे हुए हैं।

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

काम नहीं कर रहा। टेस्ट डिवाइस नेक्सस 5।


mikepenz की टिप्पणी का उपयोग करना

क्या मैं बिल्कुल नीचे कोड (कोटलिन में परिवर्तित) काम कर रहा हूँ।

// at AppCompatActivity, min SDK is 16, I tested api 25
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
    }
    if (Build.VERSION.SDK_INT >= 19) {
        window.decorView.systemUiVisibility =
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    }
    if (Build.VERSION.SDK_INT >= 21) {
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        window.statusBarColor = Color.TRANSPARENT
    }

    setContentView(R.layout.activity_main)
}

     getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
)

<style name="TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
</style>


getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

मैं समाधान भाई पाया

<style name="transparent" parent="Theme.AppCompat.Light.NoActionBar">//AppCompat is the key; You can choose any other theme than the light-theme, but stick to AppCompat
    <item name="android:windowTranslucentStatus">false</item>
    <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    //Other styling(optional)
</style>

और फिर इस पारदर्शी विषय को अपनी गतिविधि के प्रकटन पर लागू करें

 <activity
      ...
      android:theme="@style/transparent"/>

हाँ, आप इस कोड का उपयोग Style.xml में कर सकते हैं

<style name="transparent" parent="Theme.AppCompat.Light">//AppCompat is the key; You can choose any other theme than the light-theme, but stick to AppCompat

    <item name="colorPrimaryDark">#00000000</item>//THIS is the important part.
    //Other styling(optional)
</style>

फिर इसे अपने लेआउट पर लागू करने के लिए, बस मूल लेआउट में निम्नलिखित पंक्ति जोड़ें (देखें):

android:theme="@style/transparent"

यह काम मेरे लिए

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
)

styles.xml

<style name="TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
</style>

V21 \ styles.xml

<style name="TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

स्थिति पट्टी पारदर्शी या पारभासी होगी , नेविगेशन बार नहीं होगा

उम्मीद है की यह मदद करेगा!


fun showTransparentStatusbar() {
        activity!!.window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN)
    }


    fun removeStatusbarFlags() {
        activity!!.window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
    }






android-statusbar