如何动态更改ActionBar中的图标

时间:2016-10-18 12:15:57

标签: java android menu

我想动态更改ActionBar上的图标,我有一个退出菜单。但它不会在5版本中更改我的Android手机

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.exit_menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.exit_menu:
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(1);
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }
  

这是我的退出菜单xml。

 <menu xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:id="@+id/exit_menu"
                android:icon="@drawable/exit"
                android:title="Exit"
               />       
        </menu>

5 个答案:

答案 0 :(得分:1)

EDIT2: 在onCreateOptionsMenu(菜单菜单)

MenuItem menuItem=menu.findItem(R.id.exit_menu);
MenuItemCompat.getActionView(menuItem);
menuItem.setIcon(R.drawable.new_icon);

的xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
    <item
        android:id="@+id/exit_menu"
        android:title="@string/menu_string"
        android:icon="@drawable/exit"
        app:showAsAction="always"/>
</menu>

答案 1 :(得分:0)

在onCreateOptionsMenu方法中使用

menu.getItem(0).setIcon(drawable);

答案 2 :(得分:0)

 @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        settingsItem = menu.findItem(R.id.exit_menu);


        if (SOME CONDITION) {
            settingsItem.setIcon(getDrawable(R.drawable.ic_add_image));
        } else {
           settingsItem.setIcon(getDrawable(R.drawable.ic_add_image1));
        }
        settingsItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                //ONCLICK METHOD
                return false;
            }
        });
        return super.onPrepareOptionsMenu(menu);
    }

不要处理onOptionsItemSelected()方法。

答案 3 :(得分:0)

如果您使用工具栏而不是ActionBar,则可以对其进行更多自定义。例如,您可以为工具栏使用自定义xml布局文件,使其看起来就像您希望的那样。

答案 4 :(得分:0)

您好我刚刚在选项菜单中添加了一行来更改图标。 item.setIcon(getResources().getDrawable(R.drawable.ic_launcher));

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.exit_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.exit_menu:
                android.os.Process.killProcess(android.os.Process.myPid());
                //Add This line in your code
                item.setIcon(getResources().getDrawable(R.drawable.ic_launcher));
                System.exit(1);
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }