修改或者替换Toolbar右侧更多按钮(三个点)「终于解决」

修改或者替换Toolbar右侧更多按钮(三个点)「终于解决」**问题:**项目中需要将一些页面中toolbar的快捷菜单的更多按钮由白色改为黑色,从网上搜过一些,大多是通过修改theme实现,例如MaterialDesign主题与ToolBar讲解,由于需要修改的页面继承的父类是位于framework中,其他项目也有使用,不可以修改父类中的theme。并且如果单纯修改theme中的colorControlNormal颜色,会修改一些按钮的默认显示颜色,不…

大家好,欢迎来到IT知识分享网。

问题:项目中需要将一些页面中toolbar的快捷菜单的更多按钮由白色改为黑色,从网上搜过一些,大多是通过修改theme实现,例如Material Design主题与ToolBar讲解,由于需要修改的页面继承的父类是位于framework中,其他项目也有使用,不可以修改父类中的theme。并且如果单纯修改theme中的colorControlNormal颜色,会修改一些按钮的默认显示颜色,不满足需求。
解决方案:通过替换三个点的更多按钮图标来达到修改颜色的需求。
最终通过以下方式实现:

    /**
     * 设置更多按钮的颜色
     * @param toolbar
     * @param colorId
     */
    public static void setToolbarMoreIconCustomColor(Toolbar toolbar, int colorId) {
        if(toolbar == null) {
            return;
        }
        Drawable moreIcon = ContextCompat.getDrawable(toolbar.getContext(), R.drawable.abc_ic_menu_overflow_material);
        if(moreIcon != null) {
            moreIcon.setColorFilter(ContextCompat.getColor(toolbar.getContext(), colorId), PorterDuff.Mode.SRC_ATOP);
            toolbar.setOverflowIcon(moreIcon);
        }
    }

其中R.drawable.abc_ic_menu_overflow_material指向的就是三个点的图标

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0"
        android:tint="?attr/colorControlNormal">
    <path
            android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2c-1.1,0 -2,0.9 -2,2S10.9,8 12,8zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2c1.1,0 2,-0.9 2,-2S13.1,10 12,10zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2c1.1,0 2,-0.9 2,-2S13.1,16 12,16z"
            android:fillColor="@android:color/white"/>
</vector>

只不过其fillColor是白色而已,我们只要修改其颜色为我们想要的颜色即可,所以就有了上面的代码逻辑

moreIcon.setColorFilter(ContextCompat.getColor(toolbar.getContext(), colorId), PorterDuff.Mode.SRC_ATOP);
toolbar.setOverflowIcon(moreIcon);

最终效果如下:
在这里插入图片描述
这就达到了,通过修改更多按钮图标达到修改颜色的需求了。
参考文章:
1、ToolBar和ActionBar右边三个点的图标替换
2、Android修改ToolBar的返回按钮颜色

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/26536.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信