オプションメニューのインデックスアイコンを変更するには?
アイコン(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" />
次の行を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>
これがそれを行う方法です。アクションバーのオーバーフローアイコンを変更する場合
私にとって完璧に機能するよりシンプルなソリューションを得ました:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.change_pass);
toolbar.setOverflowIcon(drawable);
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アイテム
これに基づいて、要件に応じて適宜変更を行います。
//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>
私の場合、これは適切に機能します:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),
R.drawable.change_pass);
toolbar.setOverflowIcon(drawable);
Syed Raza Mehdiの例を使用して、互換性のためにApplication theme
name=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>
あなたはこれを達成することができます
<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>
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>
AndroidManifest.xmlのアプリケーションタグにカスタムテーマ「MyTheme」を配置します
<application
Android:name="com.example.Android.MainApp"
Android:theme="@style/AppTheme">
</application>
楽しんで。@。@
オプションメニューのインデックスアイコンの色を変更する短く簡単な方法は次のとおりです。
<!-- Android:textColorSecondary is the color of the menu overflow icon (three vertical dots) -->
<item name="Android:textColorSecondary">@color/optionMenuIconColor</item>
上記のコード行をstyle。xml(カスタムテーマ)ファイルに追加してください。ありがとうございます。
アクションバー/ツールバーのアイコン/タイトルメニューをプログラムで変更する場合は、
ステップバイステップ
private var mMenu:メニュー? = null
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
}
OnCreateOptionsMenuの実行後にメニューの一部の変更を更新するには、invalidateOptionsMenu()を使用します。このメソッドはメニューを再作成します
これは私にとってはうまくいきます。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>