【问题标题】:How to replace/change the icon of an action bar item如何替换/更改操作栏项目的图标
【发布时间】:2014-06-18 08:11:54
【问题描述】:

我希望你能帮我解决这个问题。

我有一个带有默认图标集的操作栏项目。(android:icon="@drawable/ic_action_volume_on") 但问题是我需要在我的方法“onOptionsItemSelected”中以某种方式以编程方式更改它,而且由于我最近开始使用 Android,我有点迷失了......

【问题讨论】:

    标签: android replace icons action


    【解决方案1】:

    首先你必须在onCreateOptionsMenu上保存一个菜单实例:

    private Menu menu;
    
    @Override
    public boolean onCreateOptionsMenu(final Menu menu) {
        this.menu = menu
        ...
    }
    

    然后,您可以创建以下方法:

    private void setItemView(int itemId, int layoutId) {
        if (menu != null) {
            final Menuitem myItem = menu.findItem(itemId);
            if (myItem != null) {
                MenuItemCompat.setActionView(myItem, layoutId);
            }
        }
    }
    

    它用视图替换项目的当前图标。例如,如果您想显示ProgressBar,您可以创建此布局(我们将其命名为item_custom_view.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="56dp"
        android:layout_height="wrap_content"
        android:minWidth="56dp" >
    
        <ProgressBar
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_gravity="center" />
    </FrameLayout>
    

    最后,在您的Activity 中,只需调用setItemView 方法。输入参数 id 和布局的 id(在本例中为 R.layout.item_custom_view)。

    【讨论】:

    • 是的,这给了我一个解决方法,非常感谢,最后我修复了它: final MenuItem myItem = menu.findItem(R.id.stop_music); myItem.setIcon(R.drawable.ic_action_volume_muted);
    【解决方案2】:

    你可以简单地通过定义来做到这一点

    private Menu menu;
    

    并在 onCreateOptionMenu 回调中为菜单赋值并像这样获取菜单膨胀器

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

    最后你可以用你喜欢的方法写这行来改变图标

    menu.findItem(R.id.item_id).setIcon(R.drawable.your_icon);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多