アクションバーのオーバーフローアイコンの変更


111

アクションバーのオーバーフローアイコンを変更することはできますか?すべてのActionBarアイテムに青いアイコンがあり、オーバーフローアイコンが表示されたときにそれを変更したい。


@ShirishHerwade:そのリンクは今死んでいる。
Al Lelopath 2017年

回答:


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>

また、動的に変更することもできます。ここで詳しく説明します。

プログラムによるAndroid Overflowメニューアイコンの変更


1
私はすでにソースコードを調べているこのソリューションを見つけましたが、感謝します:)それは良い答えです。
pjanecze 2012年

6
これはスタイルではなくテーマに適用されることに注意してください。気が付くまでしばらく動けなかった。Thx @aneal
Richard Le Mesurier

5
これは、Android 3.0(API 11)を実行しているタブレットでクラッシュします。これは、スタイル「android:actionOverflowButtonStyle」(おそらくプラットフォームのバグ)を定義している人が好きではないためです。したがって、values-v11 / styles.xmlとvalues-v15 / styles.xmlで異なるスタイルを使用する必要があります。
Mr-IDE

10
そして、ActionBarSherlockユーザーのために、親のスタイルがある:parent="Widget.Sherlock.ActionButton.Overflow"
ニック・ホワイト

7
appcompat(とにかくv21ロリポップ)の場合、 parent="@style/Widget.AppCompat.ActionButton.Overflow"私にはうまくいくようです。
fattire

16

それを動作させることができない人のために、「android:」名前空間なしでこれを試してください。

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

おかげで、これは本当に役に立ちました。誰かがこれについて説明を得ましたか?
DaMachk 2015

4
@DaMachk AppCompatを使用している場合は、「android:」名前空間を含めないでください。
マティアッシュ

4
  1. styles.xmlでActionbarのカスタムオーバーフローアイコンを変更します。

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

私が見つけた最も正確な方法!
Shubhamhackz

1

@adnealの答えは正しいです(そのため、これはコミュニティwikiの説明にすぎません)。

コメントの1つは、これを行う方法を誤解している可能性があることを示唆したので、私の答えは、オーバーフローアイコン画像をオーバーライドする方法のもう1つの例にすぎません。

以下のコードは、ADTサンプルNew Android Projectのテンプレートスタイルに基づいています。コードはフォルダー内の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スタイリングを理解しようとするときに使用すると便利なリソースは次のとおりです。

そこで、Overflowアイコンに使用する特定の色を定義でき、ZIPファイルには正しいstyles.xmlファイルが含まれます。


1

オーバーフローアイコンの色を変更する場合は、

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

または

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

アイコンを変更し、好きな色を選択して、オーバーフローアイコンとして設定します。


0

長い検索の後に私が従うべきガイダンスを得たもの:

  1. manifestoファイルのテーマを確認してください。
  2. 次に、res-> values-> themesに移動します。
  3. このファイルでテーマ名を見つけます。
  4. theme.xmlのテーマ内にアイテムを追加します。

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
  5. 同じファイル、つまりtheme.xmlにスタイルのアイコンを追加します。

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_menu</item>
    </style>
  6. 変更したいカスタムアイコンを確認する

それは私のために働いた

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.