单击工具栏中的更改图标

时间:2015-10-05 19:12:43

标签: android android-actionbar material-design toolbar

我在我的活动中定义了一个工具栏,该工具栏会扩展一个带有一个图标的菜单。我想要一种改变那个图标的方法;这样,当我点击它时,它会变为另一个图标或颜色......这是我的工具栏代码

final Toolbar bar = (Toolbar) findViewById(R.id.actionbar);
    bar.setTitle(Html.fromHtml("<font color=#ffffff>" + getString(R.string.print_s) + "</font>"));
    bar.setNavigationIcon(getResources().getDrawable(R.drawable.back_btn));
    bar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DetailActivity.this.finish();
        }
    });
    bar.inflateMenu(R.menu.fav);
    bar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            int id = item.getItemId();
            if (id == R.id.star) {

         //I want to change my toolbar icon here,once when its clicked...

                myFavourites();
                return true;
            }
            return false;
        }
    });

XML部分(R.menu.fav)

  <item
    android:id="@+id/star"
    android:icon="@mipmap/favorite_blue"
    app:showAsAction="ifRoom"
    android:title="@string/fav"/>

我希望在点击时将favorite_blue图标更改为其他图标。

2 个答案:

答案 0 :(得分:4)

MenuItem有一个名为setIcon(Drawable icon)的方法,它占用Drawable。只需打电话并设置即可。

如果您没有find_package (Threads) find_package(Boost,file_system,regex,system) target_link_libraries (myapp ${CMAKE_THREAD_LIBS_INIT} ${BOOST_LIBS}) ,也可以使用setIcon(int iconRes)方法。

有关Drawable here的更多信息。

示例代码:

Drawables

答案 1 :(得分:3)

只需调用方法setIcon()即可。 在您的情况下,item.setIcon(your drawable)