web-dev-qa-db-ja.com

アクションバーのオプションメニューアイコンを変更するには?

オプションメニューのインデックスアイコンを変更するには?

enter image description here

アイコン(3)を意味します。

ここに私のコードがあります:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options, menu);

    return true;
}

次に、XMLファイルを示します。

<item Android:id="@+id/Bugreport"
    Android:title="@string/option_bugreport" />

<item Android:id="@+id/Info"
    Android:title="@string/option_info" />

<item Android:id="@+id/About"
    Android:title="@string/option_about" />
46
smartmouse

次の行をapp-> main-> res-> values-> Styles.xmlで更新する必要があります

 <!-- 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/MyActionButtonOverflow</item>
</style>

<!-- Style to replace actionbar overflow icon. set item 'Android:actionOverflowButtonStyle' in AppTheme -->
<style name="MyActionButtonOverflow" parent="Android:style/Widget.Holo.Light.ActionButton.Overflow">
    <item name="Android:src">@drawable/ic_launcher</item>
    <item name="Android:background">?android:attr/actionBarItemBackground</item>
    <item name="Android:contentDescription">"Lala"</item>
</style>

これがそれを行う方法です。アクションバーのオーバーフローアイコンを変更する場合

60
Syed Raza Mehdi

私にとって完璧に機能するよりシンプルなソリューションを得ました:

Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.change_pass);
        toolbar.setOverflowIcon(drawable);
54
Parth Anjaria

1)クラスでmenuを宣言します。

private Menu menu;

2)onCreateOptionsMenuで以下を実行します。

public boolean onCreateOptionsMenu(Menu menu) {
    this.menu = menu;
    getMenuInflater().inflate(R.menu.menu_orders_screen, menu);
    return true;
}   

3)onOptionsItemSelectedで、アイテムを取得し、必要に応じて変更を行います(アイコン、テキスト、色、背景)

public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_search) {
        return true;
    }
    if (id == R.id.ventor_status) {
        return true;
    }
    if (id == R.id.action_settings_online) {
        menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.history_converted));
        menu.getItem(1).setTitle("Online");
        return true;
    }
    if (id == R.id.action_settings_offline) {
        menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.cross));
        menu.getItem(1).setTitle("Offline");
        return true;
    }

    return super.onOptionsItemSelected(item);
}


3つのメニュー項目がある場合:
menu.getItem(0)= 1アイテム、
menu.getItem(1)= 2 iteam、
menu.getItem(2)= 3アイテム

これに基づいて、要件に応じて適宜変更を行います。

9
Surendar D
//just edit menu.xml file    
//add icon for item which will change default setting icon
//add sub menus


 ///menu.xml file


    <item
            Android:id="@+id/action_settings"
            Android:orderInCategory="100"
            Android:title="@string/action_settings"
            Android:icon="@drawable/your_icon"
            app:showAsAction="always" >

            <menu>

                <item Android:id="@+id/action_menu1"
                    Android:icon="@Android:drawable/ic_menu_preferences"
                    Android:title="menu 1" />

                <item Android:id="@+id/action_menu2"
                    Android:icon="@Android:drawable/ic_menu_help"
                    Android:title="menu 2" />

            </menu>
        </item>
8
Aditya varale

私の場合、これは適切に機能します:

Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),
                                              R.drawable.change_pass);
toolbar.setOverflowIcon(drawable);
5
user7957410

Syed Raza Mehdiの例を使用して、互換性のためにApplication themename=actionOverflowButtonStyleパラメーターを追加します。

<!-- 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/MyActionButtonOverflow</item>

    <!-- For compatibility -->
    <item name="actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>

</style>
4
Joao Ferreira

あなたはこれを達成することができます

<item
    Android:id="@+id/menus"
    Android:actionProviderClass="@Android:style/Widget.Holo.ActionButton.Overflow"
    Android:icon="@drawable/your_icon"
    Android:showAsAction="always">
  <item Android:id="@+id/Bugreport"
   Android:title="@string/option_bugreport" />

  <item Android:id="@+id/Info"
  Android:title="@string/option_info" />

 <item Android:id="@+id/About"
   Android:title="@string/option_about" />
  </item>
3
Pravin
  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>
    

楽しんで。@。@

1
Luna Kong

オプションメニューのインデックスアイコンの色を変更する短く簡単な方法は次のとおりです。

<!-- Android:textColorSecondary is the color of the menu overflow icon (three vertical dots) -->
<item name="Android:textColorSecondary">@color/optionMenuIconColor</item>

上記のコード行をstyle。xml(カスタムテーマ)ファイルに追加してください。ありがとうございます。

0
AMI CHARADAVA

アクションバー/ツールバーのアイコン/タイトルメニューをプログラムで変更する場合は、

ステップバイステップ

  1. クラスでメニューを宣言

private var mMenu:メニュー? = null

  1. OnCreateOptionsMenuメソッドをオーバーライドし、アイテムを見つけて変更する必要がある

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    mMenu = menu
    menuInflater.inflate(R.menu.menu, menu)
    if (mIsFavorite){
        mMenu?.findItem(R.id.action_favorite)?.icon = yourDrawable
    } else {
        mMenu?.findItem(R.id.action_favorite)?.icon = yourDrawable
    }
    return true
    

    }

  2. OnCreateOptionsMenuの実行後にメニューの一部の変更を更新するには、invalidateOptionsMenu()を使用します。このメソッドはメニューを再作成します

0
Hai Rom

これは私にとってはうまくいきます。xmlメニューを次のように設定するだけです。

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto">
    <item
        Android:icon="@drawable/your_icon"
        Android:title="menu"
        app:showAsAction="always">
        <menu>

            <item
                Android:id="@+id/action_menu1"
                Android:orderInCategory="1"
                Android:title="menu 1" />

            <item
                Android:id="@+id/action_menu2"
                Android:orderInCategory="2"
                Android:title="menu 2" />

        </menu>
    </item>
</menu>
0
IRvanFauziE