【问题标题】:Changing icon in Toolbar on click单击时更改工具栏中的图标
【发布时间】:2015-10-05 19:12:42
【问题描述】:

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

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"/>

我想在点击喜欢的蓝色图标时将其更改为其他图标..

【问题讨论】:

    标签: android android-actionbar material-design toolbar


    【解决方案1】:

    MenuItem 有一个名为setIcon(Drawable icon) 的方法,它接受Drawable。只需调用它并设置它。

    如果您没有Drawable,也可以使用setIcon(int iconRes) 方法。

    更多关于Drawableshere


    示例代码:

    bar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                int id = item.getItemId();
                if (id == R.id.star) {
                    Drawable myDrawable = getResources().getDrawable(R.drawable.myDrawable); // The ID of your drawable.
                    item.setIcon(myDrawable);
    
                    myFavourites();
                    return true;
                }
                return false;
            }
        });
    

    【讨论】:

    • 很好的答案!感谢您提供文档和示例代码的链接。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2023-03-18
      • 1970-01-01
      • 2018-07-05
      • 2016-03-24
      相关资源
      最近更新 更多