簡體   English   中英

以編程方式更改ActionBar圖標

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM