[英]Programmatically change ActionBar icon
我將從片段返回到我的主要活動,並且為了某些邏輯,我必須更改操作欄菜單上的圖標的外觀。
這是操作欄上的菜單:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="it.gn.sfa.Main">
<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_action_search"
android:showAsAction="collapseActionView|ifRoom"
android:title="Search" />
<item
android:id="@+id/action_filter"
android:icon="@drawable/ic_action_filter_empty"
android:showAsAction="ifRoom"
android:title="Filter" />
<item
android:id="@+id/action_new"
android:icon="@drawable/ic_action_new"
android:showAsAction="ifRoom"
android:title="New" />
</menu>
我必須更改action_filter
項(id = action_filter
)。 我嘗試了不同的解決方案,在不同的帖子中找到。 評分最高的是
mOptionsMenu.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_action_filter));
但似乎不起作用。
另一方面是getActionBar().setIcon(getResources().getDrawable(R.drawable.ic_action_filter));
更改徽標,我不想這樣。
如何才能更改菜單上的第二項?
試試這個
mOptionsMenu.findItem(R.id.action_filter).setIcon(R.drawable.ic_action_filter);
假設你已經為mOptionsMenu
設置了所有mOptionsMenu
private Menu mOptionsMenu;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
// inflating your menu here
mOptionsMenu = menu;
return super.onCreateOptionsMenu(menu);
}
希望能幫助到你 :)
我希望它會對你有所幫助
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffffff'>" + "Messages" + "</font>"));
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.messagebar_color)));
getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_arrow_black);
你必須修改你的onCreateOptionsMenu(菜單菜單)
我以編程方式更改了搜索欄的顏色。 我在這里發布代碼。 希望能幫助到你。
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.items, menu);
menu.getItem(0).setIcon(getTintedDrawable(R.drawable.search, R.color.blue));
return super.onCreateOptionsMenu(menu);
}
其中getTintedDrawable()是我創建的一個返回drawable的函數。 所以你需要做的就是用你的drawable替換getTintedDrawable(R.drawable.search, R.color.blue)
。
注意:我使用了menu.getItem(0)
我的代碼,因為我在menu / items.xml中只定義了1個項目。 如果你有多個嘗試不同的值(從0到1少於菜單項的數量)。 我的猜測是它定義項目的數量,但我不太確定。
我設法以這種方式旋轉/更改圖標:
MenuItem item = getToolbar().getMenu().findItem(Menu.FIRST);
<prepare the image view from drawable here>
item.setActionView(imageView);
似乎工作正常。 您也可以簡單地使用item.setIcon()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.