简体   繁体   English

如何动态更改ActionBar中的图标

[英]How to change icons in ActionBar dynamically

I want to change the icon on the ActionBar dynamically,I have a exit menu.But It doesn't change my android phone in the 5 version 我想动态更改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);
        }
    }

This is my exit menu xml. 这是我的退出菜单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>

Edit2: in onCreateOptionsMenu (Menu menu) Edit2:在onCreateOptionsMenu(菜单菜单)中

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

xml: 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>

在onCreateOptionsMenu方法中使用

menu.getItem(0).setIcon(drawable);
 @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);
    }

do not handle in onOptionsItemSelected() method. 不要在onOptionsItemSelected()方法中处理。

If you use a Toolbar instead of the ActionBar you can customize it a lot more. 如果您使用工具栏而不是操作栏,则可以对其进行更多自定义。 For example you can use a custom xml layout file for your Toolbar, making it look just how you want it to. 例如,您可以为工具栏使用自定义xml布局文件,使其看起来像您想要的样子。

Hello I just added one line to change icon in option menu. 您好,我只添加了一行以更改选项菜单中的图标。 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);
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM