AppCompat के लिए पूर्ण स्क्रीन थीम


304

मैं जानना चाहूंगा कि मैं किसी गतिविधि के लिए पूर्ण स्क्रीन थीम (कोई शीर्षक बार + कोई एक्शनबार) कैसे लागू कर सकता हूं। मैं समर्थन पैकेज v7 से AppCompat लाइब्रेरी का उपयोग कर रहा हूं।

मैंने android:theme="@android:style/Theme.NoTitleBar.Fullscreen"अपनी विशिष्ट गतिविधि पर लागू करने की कोशिश की है लेकिन यह दुर्घटनाग्रस्त हो गई। मुझे लगता है कि ऐसा इसलिए है क्योंकि मेरा एप्लीकेशन थीम इस तरह का है।

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

मैंने भी यह कोशिश की है

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

जो केवल टाइटल बार को छुपाता है लेकिन एक्शन बार को नहीं। मेरा वर्तमान समाधान यह है कि एक्शनबार को छिपाएं

getSupportActionBar().hide();

जवाबों:


836

जब आप अपने आवेदन में Theme.AppCompat का उपयोग करते हैं, तो आप शैलियों के नीचे कोड जोड़कर FullScreenTheme का उपयोग कर सकते हैं।

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

और अपनी मैनिफ़ेस्ट फ़ाइल में भी उल्लेख करें।

<activity
   android:name=".activities.FullViewActivity"
   android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" 
/>

67
मूल शैली "Theme.AppCompat.Light.NoActionBar" होनी चाहिए
होवर रुआँ

3
वास्तव में, इसे स्टाइल xml फ़ाइल में जोड़ने के लिए पर्याप्त है: <आइटम का नाम = "एंड्रॉइड: विंडोफुलस्क्रीन"> सच </ आइटम>। एक्शन बार (टाइटल बार) दृश्यता को रनटाइम पर .hide / .show विधियों का उपयोग करके अलग से नियंत्रित किया जा सकता है।
अमीन

2
FEATURE_NO_TITLE को सम्मानित नहीं किया जा रहा था। दुन्नो अंतर, लेकिन मैंने अंततः AppCompatActivity के बजाय गतिविधि को बढ़ाने के लिए अपनी गतिविधि बदल दी और मेरे समान कोड ने काम किया (शुक्र है कि मुझे AppCompat की आवश्यकता नहीं है): this.requestWindowFeature (Window.FEATURE_N_TITLE); ।
user888867

यह स्थिति पट्टी को भी छुपाता है :(
ओमामा

3
मैं जोड़ना होगा hideNavigation()में onResume()- कि बिना, नेविगेशन पट्टी अभी भी अपने एप्लिकेशन (एपीआई 18+) में दिखाई दे रही थी
Antek

69

@Nebyan के उत्तर के आधार पर, मैंने पाया कि एक्शन बार अभी भी छिपा नहीं है।

निम्नलिखित कोड मेरे लिए काम करता है:

<style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

और निश्चित रूप से अपनी AndroidManifestफ़ाइल को संपादित करने के लिए मत भूलना।

<activity
    android:name="YOUR_ACTIVITY_NAME"
    android:theme="@style/AppFullScreenTheme" 
/>

@nebyan क्यों आपका समाधान काम नहीं करता है, और यह मेरे लिए काम करता है? क्या कारण है?
अहमत

1
<item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item>यदि आपका विषय शामिल नहीं है तो सेट करने की आवश्यकता नहीं है.NoActionBar
user924

19
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
</style>

Style.xml में उपरोक्त xml का उपयोग करके, आप शीर्षक और साथ ही एक्शन बार को छिपाने में सक्षम होंगे।


12

Android 4.0 (API स्तर 14) के संस्करणों से पहले और बाद में समस्याएँ उत्पन्न होती हैं।

से यहाँ मैं अपने खुद के समाधान बनाया।

@SuppressLint("NewApi")
@Override
protected void onResume()
{
    super.onResume();

    if (Build.VERSION.SDK_INT < 16)
    {
        // Hide the status bar
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        // Hide the action bar
        getSupportActionBar().hide();
    }
    else
    {
        // Hide the status bar
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
        / Hide the action bar
        getActionBar().hide();
    }
}

मैं इस कोड को onResume () विधि में लिखता हूं क्योंकि यदि आप अपने ऐप से बाहर निकलते हैं और फिर आप इसे फिर से खोलते हैं, तो एक्शन बार सक्रिय रहता है! (और इसलिए यह समस्या को ठीक करता है)

मुझे आशा है कि यह मददगार था;)


ध्यान दें कि यदि उपयोगकर्ता मैन्युअल रूप से स्टेटस बार खींचता है, तो वह स्वयं को फिर से गर्म नहीं करेगा। इसे बदतर बनाने के लिए, यदि सॉफ्ट कीबोर्ड दिखाई दे रहा है, तो स्टेटस बार अपने आप को बार-बार दिखाता है, रिहाइड नहीं करेगा।
हेंड्र एंगरियन


7
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //to remove "information bar" above the action bar
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    //to remove the action bar (title bar)
    getSupportActionBar().hide();
}

5

आप नीचे दिए गए चरण का अनुसरण कर सकते हैं: -

AndoridMenifest.xml

<activity
            android:name=".ui.FullImageActivity"
            android:label="@string/title_activity_main"
            android:screenOrientation="landscape"
            android:theme="@style/DialogTheme">
        </activity>

Style.xml

<style name="DialogTheme" parent="android:Theme.Dialog">

    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>

   <!-- No backgrounds, titles or window float -->
    <item name="android:windowNoTitle">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowIsFloating">false</item>
</style>

FullImageActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    setContentView(R.layout.image_view);
     }

मुझे उम्मीद है कि यह मदद करेगा..धन्यवाद !!


4

यह माता-पिता होना चाहिए = "@ शैली / Theme.AppCompat.Light.NoActionBar"

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" 
parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

केवल यह समाधान वास्तव में शीर्षक पट्टी को छुपाता है और इसे पूरी तरह से पूर्ण स्क्रीन बनाता है। सही समाधान के रूप में चिह्नित किया जाना चाहिए। धन्यवाद!
डार्को माक्सिमोविक

3

स्थिति बार और एक्शन बार को छिपाने और अपनी गतिविधि को पूर्ण-स्क्रीन बनाने के लिए अपनी गतिविधि onResume()या onWindowFocusChanged()विधि में निम्न कोड का उपयोग करें :

@Override
protected void onResume() {
    super.onResume();
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN);
}

आप निम्नलिखित लिंक में अधिक जानकारी पा सकते हैं:

नोट: इस थ्रेड में प्रदान किए गए xml सॉल्यूशंस का उपयोग करके मैं केवल स्टेटस बार को छिपा सकता था लेकिन नेविगेशन बार को नहीं।


1
धन्यवाद, यह नेविगेशन बार को छिपाने वाला एकमात्र है! इस उत्तर की अत्यधिक अनुशंसा करें।
महारकस


2

यह विषय केवल एपीआई 21 (शामिल) के बाद काम करता है। और StatusBar और NavigationBar दोनों को पारदर्शी बनाएं।

<style name="TransparentAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  <item name="windowActionBar">false</item>
  <item name="windowNoTitle">true</item>
  <item name="android:statusBarColor">@android:color/transparent</item>
  <item name="android:windowBackground">@android:color/transparent</item>
  <item name="android:navigationBarColor">@android:color/transparent</item>
  <item name="android:windowIsTranslucent">true</item>
  <item name="android:windowContentOverlay">@null</item>
</style>

1

AppCompat में शीर्षक पट्टी हटाने के लिए:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
    }

1

आप निम्नलिखित की कोशिश कर सकते हैं :

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

0
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>


1
कृपया कोड की व्याख्या भी करें, यदि आप इसे प्रदान करते हैं, तो यह आपके कोड को समझने में मदद करता है और भविष्य की समस्याओं के लिए अंतर्दृष्टि प्राप्त करने में मदद कर सकता है।
लेपिडोप्टेरॉन

0

सिर्फ यह ?

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen">
    <item name="android:windowFullscreen">true</item>
</style>

0

बस अपनी शैली के लिए इस लोग पर:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item> </style>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.