एक्शन बार में ओवरफ्लो आइकन बदलना


111

क्या एक्शन बार में ओवरफ्लो आइकन बदलना संभव है? मेरे पास सभी ActionBar आइटमों के लिए नीले रंग के आइकन हैं और मैं भी दिखाई देने पर ओवरफ्लो आइकन बदलना चाहता हूं।


@ शिरीषहेरवाडे: वह लिंक अब मर चुका है।
अल लेलोपथ

जवाबों:


255

आप एक शैली के साथ कर सकते हैं, लेकिन आपको इसे मुख्य थीम घोषणा में जोड़ना होगा।

<resources>
    <!-- Base application theme. -->
    <style name="Your.Theme" parent="@android:style/Theme.Holo">
        <!-- Pointer to Overflow style ***MUST*** go here or it will not work -->
        <item name="android:actionOverflowButtonStyle">@style/OverFlow</item>
    </style>

    <!-- Styles -->
    <style name="OverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
        <item name="android:src">@drawable/ic_action_overflow</item>
    </style>

</resources>

आप इसे गतिशील रूप से भी बदल सकते हैं, जिसके बारे में मैं यहां विस्तार से बताता हूं:

एंड्रॉइड ओवरफ्लो मेनू आइकन को प्रोग्रामेटिक रूप से बदलना


1
मैं पहले से ही इस समाधान को स्रोत कोड में देख रहा हूं, लेकिन धन्यवाद :) यह एक अच्छा जवाब है।
पञ्चेज़े

6
ध्यान दें कि यह विषय पर लागू होता है, और स्टाइल पर नहीं। जब तक मुझे एहसास हुआ कि मैं थोड़ी देर के लिए अटक गया था। Thx @aneal
रिचर्ड ले

5
यह एंड्रॉइड 3.0 (एपीआई 11) पर चलने वाले टैबलेट्स पर क्रैश हो जाएगा, क्योंकि यह स्टाइल "एंड्रॉइड: एक्शनऑवरफ्लोटन" (शायद प्लेटफॉर्म बग) को परिभाषित करने वाले लोगों को पसंद नहीं करता है। इसलिए आपको वैल्यूज़- v11 / स्टाइल.xml और वैल्यूज़- v15 / स्टाइल.xml में अलग-अलग स्टाइल का इस्तेमाल करना होगा।
श्री-आईडीई

10
और ActionBarSherlock उपयोगकर्ताओं के लिए, मूल शैली है:parent="Widget.Sherlock.ActionButton.Overflow"
निक व्हाइट

7
Appcompat (वैसे भी v21 लॉलीपॉप) के लिए, parent="@style/Widget.AppCompat.ActionButton.Overflow"मेरे लिए काम करने लगता है।
21

16

उन लोगों के लिए जो इसे पाने के लिए काम नहीं कर सकते हैं "android:" नामस्थान के बिना यह प्रयास करें।

<item name="actionOverflowButtonStyle">@style/OverFlow</item>

धन्यवाद दोस्त, यह वास्तव में मदद की। किसी को भी इसके लिए एक स्पष्टीकरण मिला?
DaMachk

4
@DaMachk यदि आप AppCompat का उपयोग कर रहे हैं, तो "android:" नाम स्थान शामिल न करें।
मतीश

4
  1. Action.xml में एक्शनबार के अपने कस्टम अतिप्रवाह आइकन को बदलें।

     <resources>
        <!-- Base application theme. -->
        <style name=“MyTheme" parent="@android:style/Theme.Holo">
           <!-- Pointer to Overflow style DONT forget! -->
           <item name="android:actionOverflowButtonStyle">@style/MyOverFlow</item>
        </style>
    
        <!-- Styles -->
        <style name="MyOverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
            <item name="android:src">@drawable/ic_your_action_overflow</item>
        </style>
     </resources>
  2. AndroidManifest.xml के एप्लिकेशन टैग में कस्टम थीम "MyTheme" डालें

    <application
        android:name="com.example.android.MainApp"
        android:theme="@style/AppTheme">
    </application>

मज़े करो।@।@


4

कोई फर्क नहीं पड़ता कि मैंने क्या करने की कोशिश की styles.xml, किसी भी समाधान ने मेरे लिए काम नहीं किया। अंत में, यदि आपके पास AppCompat 23+ है, जो आपको चाहिए, तो यह सबसे आसान तरीका है जो वास्तव में काम करता है:

toolbar.setOverflowIcon(drawable);

सबसे सटीक तरीका जो मैंने पाया है!
शुभमखेज

1

@ adneal का उत्तर सही है (इसलिए इस पर विस्तार के लिए यह केवल एक सामुदायिक विकि स्पष्टीकरण है)।

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

नीचे दिया गया कोड ADT नमूना न्यू एंड्रॉइड प्रोजेक्ट से टेम्पलेट शैलियों पर आधारित है। कोड styles.xmlफ़ाइल से res/valuesफ़ोल्डर में आता है ।


<style name="AppBaseTheme" parent="android:Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.

    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">

    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
</style>

<style name="OverflowMenuButton" parent="@android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_menu_moreoverflow</item>
</style>

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

ActionBarस्टाइल को समझने की कोशिश करते समय उपयोग करने के लिए एक उपयोगी संसाधन है:

वहां आप अपने ओवरफ्लो आइकन के लिए उपयोग करने के लिए विशिष्ट रंगों को परिभाषित कर सकते हैं, और ज़िप फ़ाइल में आपके लिए सही styles.xmlफ़ाइल शामिल होगी ।


1

ओवरफ़्लो आइकन रंग परिवर्तन के लिए, आप बस जोड़ सकते हैं

toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));

या

toolbar.setOverflowicon(getDrawable(R.id.redIcon));

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


0

लंबी खोज के बाद मुझे जो मार्गदर्शन मिला, उसका पालन करना चाहिए:

  1. घोषणापत्र फ़ाइल में विषय की जाँच करें।
  2. फिर res-> मान-> थीम पर जाएं।
  3. इस फ़ाइल में थीम का नाम खोजें।
  4. विषय के भीतर आइटम को theme.xml में जोड़ें:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
  5. उसी फ़ाइल में शैली में आइकन जोड़ें जिसका अर्थ है कि थीम। xml:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_menu</item>
    </style>
  6. कस्टम आइकन देखें जिसे आप बदलना चाहते हैं

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

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