Android: कुछ गतिविधियों पर ActionBar को कैसे छिपाएं


93

मैंने छप स्क्रीन के साथ एक सरल डेमो एप्लिकेशन को एक मैप और कुछ नियमित स्क्रीन विकसित किया है।

मेरे पास शीर्ष पर एक एक्शन बार है जिसमें एक लोगो है। यह सब मेरे फोन (गैलेक्सी s1 I9000 V2.3) पर ठीक लग रहा है, लेकिन जब मैंने गैलेक्सी s2 v4 पर इसका परीक्षण किया तो एक्शन बार स्प्लैश स्क्रीन और मैप स्क्रीन में भी दिखाई देता है।

स्पलैश और मानचित्र गतिविधि एक्शनबैक्टिविटी से विरासत में भी नहीं मिली है, इसलिए यह कैसे संभव है और मैं इसे कैसे दूर कर सकता हूं?

मैनिफ़ेस्ट:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/Theme.AppCompat.Light" >
        <activity
            android:name=".HomeActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >

            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".MapActivity"
            android:label="" >
        </activity>
        <activity
            android:name=".PackageActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >
        </activity>
        <activity
            android:name=".SplashActivity"
            android:label="" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

MapActivity परिभाषा (यह एक लंबा है इसलिए मैंने सिर्फ परिभाषा को शामिल किया है):

public class MapActivity extends FragmentActivity implements LocationListener

स्पलैश गतिविधि:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

public class SplashActivity extends Activity{

    private static final long SPLASH_DISPLAY_LENGTH = 2000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                Intent mainIntent = new Intent(SplashActivity.this,HomeActivity.class);
                SplashActivity.this.startActivity(mainIntent);
                SplashActivity.this.finish();
            }
        }, SPLASH_DISPLAY_LENGTH);

    }

}

जवाबों:


129

गतिविधि के लिए अपने थीम में निम्नलिखित लागू करें AndroidManifest.xml:

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

यह ट्रिक काम आना चाहिए।


1
मैं उपयोग नहीं कर सकता getActionBarक्योंकि गतिविधि ActionBarActivity
टॉमर

अगर मैं उपयोग करता हूँ <item name="android:windowActionBar">false</item>जो इसे सभी स्क्रीन पर नहीं छुपाता है?
तोमर

मेरे उत्तर को अपडेट करें जो आपकी आवश्यकता के लिए अधिक उपयुक्त होना चाहिए।
Si8

131

जैसा कि आप एक निश्चित गतिविधि में छिपाने के बारे में पूछ रहे हैं , यह वही है जो आपको चाहिए:

getSupportActionBar().hide(); 

32

1. अपनी manifest.xmlफ़ाइल के लिए।

2. जिसके लिए आप फिर अपने ActionBar और छुपाना चाहते हैं ,Findactivity tagadd

एंड्रॉयड: विषय = "@ शैली / Theme.AppCompat.NoActionBar"

           <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            >

21

अगर आप बिना एक्शन और टाइटल के फुल स्क्रीन पाना चाहते हैं।

इसे style.xml में जोड़ें

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

और मेनिफ़ेस्ट ऑफ़ एक्टिविटी ऑफ़ मेनिफ़ेस्ट ऑफ़। एक्सएमएल।

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

15

ActionBarआम तौर पर अपने साथ मौजूद है Fragmentsइसलिए से Activityआप इसे छिपा कर सकते हैं

getActionBar().hide();
getActionBar().show();

और Fragmentआप इसे कर सकते हैं

getActivity().getActionBar().hide();
getActivity().getActionBar().show();

6
मैं उपयोग करता हूं: getSupportActionBar().hide(); ActionBarActivity में
इहाब शूलीly

8

यदि आप Theme.AppCompat.Light का उपयोग कर रहे थे, तो बेहतर समतुल्य Theme.AppCompat.Light.NoActionBar होगा।

मैंने पाया कि Theme.AppCompat.NoTitleBar का उपयोग करने से मेरा बटन टेक्स्ट अदृश्य हो गया है इसलिए मैं Theme.AppCompat.Light.NoActionBar का उपयोग कर रहा हूं।

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.AppCompat.Light.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

7

यह मेरे लिए काम करता है! इसे अपनी गतिविधि में प्रकट करें

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

आप अपनी कस्टम थीम भी इस तरह से style.xml में बना सकते हैं:

<style name="Theme.MyCustomTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name = "android:windowActionBar">false</item>
        <item name = "android:windowNoTitle">true</item>
        // more custom...
    </style>

उममीद है कि इससे मदद मिलेगी।


5

आप यहाँ पर लो प्रोफाइल मोड का उपयोग कर सकते हैं

बस इसके लिए खोज SYSTEM_UI_FLAG_LOW_PROFILEभी नेविगेशन बटन को कम कर देता है अगर वे स्क्रीन के मौजूद हैं।


+1 करने के लिए मुझे इसे शुरू करने के लिए :), मैं पहले @ SiKni8 समाधान की जांच करूंगा क्योंकि मैं गैर कोडिंग समाधान पसंद करता हूं
Tomer

1
कोई बात नहीं, मैंने अपने ऐप में एक पूर्ण स्क्रीन मैप प्रदर्शित करने के लिए इसे वास्तव में उपयोगी पाया, मेरे लिए वास्तव में अच्छी तरह से काम करता है।
टीएमएच

4

उपरोक्त उत्तर एक्शनबार की मदद करेगा। इसे जोड़ने के लिए, यदि आप स्प्लैश स्क्रीन का उपयोग कर रहे हैं तो निम्नलिखित कोड का उपयोग करें: सामग्री दृश्य सेट करने से पहले इसका उपयोग करें:

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

बस स्पष्ट करने के लिए, यहाँ है कि आप इसे कैसे करते हैं:

    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);         
    setContentView(R.layout.activity_main);

यह आपकी स्क्रीन को एक पूर्ण स्क्रीन बनाता है, अर्थात जहां आप नेटवर्क बार देखते हैं, आदि शीर्ष पट्टी को हटा दें


4

AndroidManifest.xml में गतिविधि के लिए अपने थीम में निम्नलिखित लागू करें:

<activity android:name=".DashboardActivity"
        android:theme="@style/AppFullScreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

फिर अपनी शैली में निम्नलिखित को स्टाइल में लागू करें। एक्सएमएल

<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>

2

// शीर्ष पर ActionBar छिपाएं

// इस कोड को जावा फाइल में जोड़ें

    ActionBar actionBar=getSupportActionBar();
    actionBar.hide();

1

यह एपीआई 27 में काम करता है

स्टाइल में। Xml कोड को निम्न में बदलें ...।

<resources>
    <!-- No Action Bar -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

फिर फ़ाइलों में (जैसे। Activity_list.xml) जिसमें आप एक टूलबार रखना चाहते हैं निम्नलिखित कोड डालते हैं।

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/colorPrimary"/>

यदि आपको रैखिक लेआउट पर स्विच करने में समस्या है (क्योंकि इस कोड का परीक्षण किया गया है)


1

से यहाँ :

एंड्रॉइड 3.0 (एपीआई स्तर 11) के साथ शुरुआत करते हुए, डिफ़ॉल्ट थीम का उपयोग करने वाली सभी गतिविधियों में ऐप बार के रूप में एक्शनबार है। हालांकि, विभिन्न एंड्रॉइड रिलीज पर देशी एक्शनबेर में ऐप बार सुविधाओं को धीरे-धीरे जोड़ा गया है। नतीजतन, देशी ActionBar अलग तरीके से व्यवहार करता है जो इस बात पर निर्भर करता है कि Android सिस्टम किस उपकरण का उपयोग कर रहा है । इसके विपरीत, टूलबार के समर्थन लाइब्रेरी के संस्करण में सबसे हाल की सुविधाओं को जोड़ा गया है , और वे किसी भी डिवाइस पर उपलब्ध हैं जो समर्थन लाइब्रेरी का उपयोग कर सकते हैं।

तो एक विकल्प ActionBar को पूरी तरह से अक्षम करना है (ऐप मेनिफ़ेस्ट। Xml फ़ाइल में) और फिर हर पेज में टूलबार जोड़ें, जिसमें ActionBar की आवश्यकता है।

(चरण-दर-चरण स्पष्टीकरण के लिए उपरोक्त लिंक का पालन करें)



0

अपनी शैली में नई शैली जोड़ें

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="LoginTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

और फिर अपने मेनिफ़ेस्ट में निम्न पंक्ति जोड़ें

<activity android:name=".Login"
        android:label="@string/app_name"
        android:theme="@style/LoginTheme"
        >

0

यदि विषय बदलने के बाद भी समस्या मौजूद है, तो गद्दी विशेषता के लिए जाँच करें।

पैडिंग इश्यू विखंडन विंडो / ऐप विंडो के शीर्ष पर एक सफेद स्थान बनाता है

पैडिंग इश्यू विखंडन विंडो / ऐप विंडो के शीर्ष पर एक सफेद स्थान बनाता है

एक बार जब आप गद्दी हटा देते हैं - शीर्ष मान स्वचालित रूप से सफेद स्थान हटा दिया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.