web-dev-qa-db-ja.com

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

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

109
pjanecze

スタイルは使用できますが、メインのテーマ宣言に追加する必要があります。

<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オーバーフローメニューアイコンを変更する

252
adneal

動作しない場合は、「Android:」名前空間なしでこれを試してください。

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

styles.xmlで何をしようとしても、解決策はありませんでした。最後に、AppCompat 23+がある場合、これが実際に動作する最も簡単な方法です。

toolbar.setOverflowIcon(drawable);
4
Starwave
  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
Luna Kong

@ adneal's answer は正しい(したがって、これはコミュニティwikiの説明にすぎません)。

コメントの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スタイリングを理解しようとするときに使用する便利なリソースは次のとおりです。

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

1

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

  1. マニフェストファイルのテーマを確認してください。
  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. 変更するカスタムアイコンを確認します

それは私のために働いた

0
Issac Balaji

オーバーフローアイコンの色を変更するには、追加するだけです

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

または

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

アイコンを変更し、好きな色を選択して、Overflowiconとして設定します。

0
Navin Kumar