एंड्रॉइड पर एक्शन बार से आइकन / लोगो निकालें


146

मैं एक्शन बार से आइकन / लोगो को हटाने का कोई तरीका ढूंढने की कोशिश कर रहा हूं, लेकिन एसओ, एंड्रॉइड के प्रलेखन और Google को खोजने के एक घंटे के बाद ही एकमात्र चीज मिल गई है। वह नहीं है जो मैं चाहता हूं। केवल शीर्षक बार से आइकन / लोगो को हटाना चाहते हैं।

किसी को पता है कि यह कैसे पूरा करें? अधिमानतः मैं XML में ऐसा करना चाहूंगा ।


1
आप एक्शनबार पर सिर्फ एपीआई गाइड पढ़ सकते हैं। इसे गाइड में सही कहते हैं।
ममगर्ज़

6
हर जानकारी कहीं न कहीं मिलनी ही है।
हर्टन

क्या आप हमें दिखा सकते हैं कि आपने क्या प्रयास किया है? आपने पहले क्या पाया है जो काम नहीं करता है?
DForck42

@ DForck42 यह सवाल अब (लगभग 4 साल पुराना) वास्तव में प्रासंगिक नहीं है। आप नीचे दिए गए उत्तरों में इसे प्राप्त करने के बहुत सारे तरीके पा सकते हैं।
१५

जवाबों:


58

यदि आपने अपने टैग android:logo="..."में परिभाषित किया है , तो आपको आइकन को छिपाने के लिए इस सामान का उपयोग करने की आवश्यकता है:<application>AndroidManifest.xml

पूर्व- v11 विषय

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

v11 और अप थीम

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

इन दोनों शैलियों के उपयोग ने 2.3 पर एक्शन बार आइकन और मेरे लिए 4.4 डिवाइस को ठीक से छिपा दिया है (यह ऐप AppCompat का उपयोग करता है )।


यह काम करता है, लेकिन मेरे मामले में, जब मेरे पास एक खोज दृश्य है और इसे क्लिक करें / इसे विस्तारित करें, तो मेरा ऐप आइकन / लोगो फिर से दिखाई देता है। कोई विचार?
Acrespo

@acrespo हम्म मैं जानता हूँ कि आप किस बारे में बात कर रहे हैं लेकिन मैंने उस एक के लिए एक समाधान की जाँच नहीं की है, क्षमा करें।
चार्ल्स मैडरे जूल

1
मैंने जो कुछ किया वह <application (...) android:logo="@android:color/transparent"> (...)मेरे अंदर स्थापित हो रहा है AndroidManifest.xmlऔर इस तरह से अपनी शैली के useLogoलिए मजबूर कर रहा displayOptionsहूं <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>। यह अंतिम भाग कुछ उपकरणों के रूप में महत्वपूर्ण था (मुझे लगता है कि ज्यादातर पोस्ट-लॉलीपॉप) शापित खोज ने appIcon लिया और इसे लोगो के स्थान पर रखा, भले ही लोगो को पारदर्शी के रूप में सेट किया गया था: s
acrespo

228

अपनी क्रिया पट्टी शैलियों में निम्न कोड जोड़ें:

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <!-- This does the magic! -->

पुनश्च: मैं एक्शनबार शर्लक का उपयोग कर रहा हूं और यह ठीक काम करता है।


2
काफी अच्छी ट्रिक, धन्यवाद! यह एक्शन बार में जगह लेना भी बंद कर देता है!
इगोर :ordaš

6
धन्यवाद .. यह कोड में भी काम किया है ... actionBar.setIcon (android.R.color.transparent);
जगदीप सिंह

1
बहुत बढ़िया जवाब ... :)
Bytecode

24
कुछ सैमसंग डिवाइस @android:color/transparentब्लैक के रूप में प्रदर्शित होते हैं । पागल लगता है, लेकिन कई डिवाइस निर्माता एंड्रॉइड की डिफ़ॉल्ट सेटिंग्स को ओवरराइड करते हैं; रंगों सहित। इस वजह से, मैं इस तरह color.xml में एक रंग बनाऊंगा: <color name="transparent">#00000000</color>और संदर्भ है कि इसके बजाय एंड्रॉइड से मूल्य प्राप्त करें।
मैट डब्ल्यू

1
@jose_GD: android: displayOptions v11 और केवल ऊपर है, इसलिए आपको बैकवर्ड संगत होने की आवश्यकता है।
Nilzor

115

यदि आप विशेष गतिविधि में आइकन नहीं चाहते हैं।

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    

45
। getActionBar () setIcon (android.R.color.transparent); पर्याप्त लगता है
लड़का

कॉल विधि getActionBar () .... इस समस्या का बेहतर समाधान है (एक्शन बार से आइकन हटाएं) क्योंकि यदि आप नेविगेशन बार और एक्शन बार का उपयोग करते हैं, तो आपका एक्शन बार नेविगेशन बार से ऊपर होगा। यदि आप setDisplayShowHomeEnabled (झूठा) का उपयोग करते हैं तो नेविगेशन बार कार्रवाई पट्टी पर होगा और आप यह नहीं चाहते हैं।
होर्कावलना

मैं इसे ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd);
बदलूंगा

1
@ एडिस: अभी भी एक्शनबार के बाईं ओर खाली जगह दिखाता है। कोई सुझाव?
रोवन

यदि आपने लोगो सेट नहीं किया है तो यह ठीक काम करता है। मेरे मामले में मुझे विधि के setLogoबजाय उपयोग करना था setIcon। फिर भी, महान टिप, मुझे सही रास्ते पर मिला !!
लूसीकोस्टा

49

इसने मेरे लिए काम किया

getActionBar().setDisplayShowHomeEnabled(false);

2
यह टैब / नेविगेशन बार के तहत एक्शन बार डालता है। जाहिरा तौर पर यह व्यवहार "डिज़ाइन द्वारा" है ... code.google.com/p/android/issues/detail?id=36191
रोजर केय्स

वैसे भी इस सवाल का जवाब नहीं है। मुझे इस सुविधा के बारे में पता था, लेकिन मैं XML के लिए पूछ रहा था!
हर्टन

ऐसा लगता है कि यह उत्तर होना चाहिए - अन्यथा आप एक वैश्विक समाधान लागू कर रहे हैं, जो मुझे संदेह है कि हर कोई क्या चाहता है। मेरे मामले में, मैं कुछ पृष्ठों पर लोगो दिखाना चाहता हूं, लेकिन अन्य पृष्ठों से इसका कोई मतलब नहीं है और कार्रवाई पट्टी को बंद कर देता है।
डिस्कोडेव

28

कॉलिंग

mActionBar.setDisplayHomeAsUpEnabled(true);

के अतिरिक्त,

mActionBar.setDisplayShowHomeEnabled(false);

लोगो छिपाएगा लेकिन होम अस अप आइकन प्रदर्शित करेगा। :)


वैसे भी इस सवाल का जवाब नहीं है। मुझे इस सुविधा के बारे में पता था, लेकिन मैं XML के लिए पूछ रहा था!
हर्टन

@Hrafn - मुझे लगा कि XML केवल पसंदीदा उत्तर नहीं था। :( मुझे लगता है कि यह अभी भी लोगों की मदद कर रहा है। :)
अतुल ओ होलिक

15

विदित हो कि:

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

आपके विकल्पों को भी पारदर्शी बनाएगा।


13
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);

वैसे भी इस सवाल का जवाब नहीं है। मुझे इस सुविधा के बारे में पता था, लेकिन मैं XML के लिए पूछ रहा था!
हर्टन

12
getActionBar().setIcon(android.R.color.transparent);

इसने मेरे लिए काम किया।


11

उपयोग करके शीर्षक निकालें या दिखाएं:

getActionBar().setDisplayShowTitleEnabled(true);

लोगो का उपयोग करके निकालें या दिखाएं:

getActionBar().setDisplayUseLogoEnabled(false);

सभी हटाएं:

getActionBar().setDisplayShowHomeEnabled(false);

वैसे भी इस सवाल का जवाब नहीं है। मुझे इस सुविधा के बारे में पता था, लेकिन मैं XML के लिए पूछ रहा था!
हर्टन

9

आप AndroidManifest.xml में नीचे कोड भी जोड़ सकते हैं ।

android:icon="@android:color/transparent"

यह ठीक काम करेगा।

लेकिन मैंने पाया कि यह एक समस्या देता है क्योंकि लॉन्चर आइकन भी पारदर्शी हो जाता है।

इसलिए मैंने इस्तेमाल किया:

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

और यह ठीक काम किया।

लेकिन अगर आप एक से अधिक गतिविधि कर रहे हैं और किसी गतिविधि पर आइकन को पारदर्शी बनाना चाहते हैं तो पिछला तरीका काम करेगा।


2

मैंने इसका इस्तेमाल किया और यह मेरे लिए काम कर गया।

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));

वैसे भी इस सवाल का जवाब नहीं है। मुझे इस सुविधा के बारे में पता था, लेकिन मैं XML के लिए पूछ रहा था!
हर्टन

2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);

ढेर अतिप्रवाह में आपका स्वागत है! आमतौर पर आपके समान उत्तर को निम्न गुणवत्ता वाला माना जाता है। भविष्य के संदर्भ के लिए आपको आपके द्वारा प्रदान किए गए कोड के बारे में कुछ स्पष्टीकरण जोड़ने पर विचार करना चाहिए और आपको बेहतर कोड संरचना करनी चाहिए (प्रत्येक पंक्ति की शुरुआत में 4 रिक्त स्थान जोड़ें, या यह सब चुनें और पाठ बॉक्स के ऊपर {} प्रतीक पर क्लिक करें।) इसके अलावा, आपको प्रश्न की तारीख (एक साल पहले) और इस तथ्य पर ध्यान देना चाहिए कि यह पहले से ही उत्तर दिया गया है (ग्रीन चेक साइन)। आपकी प्रोग्रामिंग पर शुभकामनाएँ :)
हिस्टो वालकनोव

वैसे भी इस सवाल का जवाब नहीं है। मुझे इस सुविधा के बारे में पता था, लेकिन मैं XML के लिए पूछ रहा था!
हर्टन

1

मुझे लगता है कि सटीक उत्तर है: एपी 11 या उच्चतर के लिए:

getActionBar().setDisplayShowHomeEnabled(false);

अन्यथा:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(क्योंकि इसमें एक सहायता पुस्तकालय की आवश्यकता है।)


वैसे भी इस सवाल का जवाब नहीं है। मुझे इस सुविधा के बारे में पता था, लेकिन मैं XML के लिए पूछ रहा था!
हर्फन


0

क्युकी अबाज़िज़ का जवाब ठीक है, लेकिन मैं अभी भी लंबे समय से संघर्ष कर रहा था कि यह कम्पैटिबिलिटी पैक के साथ काम करे और स्टाइल को सही तत्वों पर लागू करे। इसके अलावा, पारदर्शिता-हैक अनावश्यक है। तो यहाँ v8 और ऊपर के लिए काम कर रहा एक पूर्ण उदाहरण है:

मूल्यों \ styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyActivityTheme" parent="@style/Theme.AppCompat">
        <item name="actionBarStyle">@style/NoLogoActionBar</item> <!-- pre-v11-compatibility -->
        <item name="android:actionBarStyle">@style/NoLogoActionBar</item>
    </style>
    <style name="NoLogoActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showHome</item> <!-- pre-v11-compatibility -->
        <item name="android:displayOptions">showHome</item>
    </style>
</resources>

AndroidManifest.xml (शेल)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">   
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
    <application android:theme="@android:style/Theme.Light.NoTitleBar">
        <activity android:theme="@style/PentActivityTheme"/>
    </application>
</manifest>

0

अपनी उपस्थिति में जाएं और अपनी गतिविधि ढूंढें और फिर यह कोड जोड़ें:

android:theme="@android:style/Theme.NoTitleBar"

ऊपर लाइन अपने छिपाने Actionbar

यदि आपको अन्य सुविधा की आवश्यकता है तो आप (CLR + SPC) के साथ अन्य विकल्प देख सकते हैं।


0

सबसे तेज़ तरीका है कि आप अपने मेनिफेस्ट.एक्सएमएल को संशोधित करें। यदि उदाहरण के लिए आप गतिविधि "गतिविधि" के लोगो को हटाना चाहते हैं, और लोगो को अन्य गतिविधियों में छोड़ना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />

0

उपरोक्त में से कोई भी काम नहीं किया।

लेकिन यह चाल चली:

override fun onCreate() {
    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbar)
    toolbar.logo = null

(टूलबार से हटाए गए आइकन)

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