修改或者替换Toolbar右侧更多按钮(三个点)

问题:项目中需要将一些页面中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的返回按钮颜色

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Layui是一个基于Javascript的前端UI框架,非常流行和易于使用。在使用Layui中的工具栏(toolbar)时,有时可能会遇到添加的上传按钮不到的问题。 造成上传按钮无法击的主要原因可能有以下几种: 1. 代码错误:首先,要确保你的代码没有错误,包括拼写错误、语法错误等等。请检查你在toolbar中添加上传按钮的代码是否正确无误。 2. 元素层级问题:如果上传按钮的父元素或祖先元素的层级比较高,可能会导致上传按钮被覆盖或隐藏在其他元素之后,无法被击。你可以通过设置CSS的`z-index`属性来调整元素的层级,确保上传按钮位于其他元素之上。 3. CSS样式问题:有时候,上传按钮的样式可能会被其他CSS样式覆盖或修改,导致无法显示或无法击。你可以通过检查CSS文件或使用浏览器的开发者工具来查看上传按钮的样式和相关属性是否正确。 4. 其他JavaScript代码冲突:如果你在使用Layui的同时,还有其他的JavaScript代码在页面中运行,可能会导致冲突或重写Layui的功能,进而影响到上传按钮的可击性。你可以尝试暂时移除其他的JavaScript代码,然后再测试上传按钮是否可击。 总结来说,如果Layui中的上传按钮无法击,可以先检查代码是否正确无误,然后再检查元素层级、CSS样式以及可能的JavaScript冲突等问题。希望以上解答对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值