改变ActionBar右侧三个小点的颜色

2023-10-28 17:40

本文主要是介绍改变ActionBar右侧三个小点的颜色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先介绍一下背景,使用的是Support v7 21+的兼容库来实现 material style

Theme

  <style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="windowActionBar">false</item><item name="android:windowNoTitle">true</item><!-- Actionbar color --><item name="colorPrimary">@color/android_blue</item><!--Status bar color--><item name="colorPrimaryDark">@color/android_blue</item><item name="android:windowContentOverlay">@null</item><item name="android:scrollbarThumbVertical">@drawable/scrollbar_handle_holo_light</item><item name="android:windowAnimationStyle">@style/ActivityAnimationStyle</item><item name="android:textColor">@color/black</item><item name="colorAccent">@color/android_blue</item><item name="android:textColorPrimary">@color/black</item></style>


可是出现的效果是



三个黑色的小点和背景还有前面的文字格格不入,那么怎么解决这个问题尼?搜索了一些解决方案比如

<style name="MyCustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item><item name="actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style><style name="MyCustomTheme.OverFlow"><item name="android:src">@drawable/my_overflow_image</item>
</style>
但是没有效果,突然想起来一个开源项目Sky31Radio,有遇到同样的场景,果然找到了解决方案,问题的关键在于使用了ToolBar来代替Actionbar,那么menu和overflow的样式应该在Toolbar上定义。

下面是解决方案:

actionBar右上角如果是文本的menu,如果想要自定义样式需要在Toolbar中自定义style

 app:theme="@style/AppTheme.ActionBar"

然后在style.xml中

<style name="AppTheme.ActionBar" parent="<span style="color:#ff0000;">@style/ThemeOverlay.AppCompat.Dark.ActionBar</span>"><item name="actionMenuTextColor">#fff</item><item name="actionMenuTextAppearance">@style/AppTheme.actionMenuTextSize</item></style><style name="AppTheme.actionMenuTextSize" parent="Base.TextAppearance.AppCompat.Widget.ActionBar.Menu"><item name="android:textSize">18sp</item><item name="android:textStyle">normal</item></style>


AppTheme.ActionBar的继承很重要,之前绕弯一直是没有找到正确的parent,使用darkActionBar,很显然,内部的图标和文字都是白色的,上面的灰色点问题就解决了,然后文本的大小可以使用actionMenuTextAppearance属性自定义,文本加粗改成normal,这样就搞定了预计的效果







相关资料:

How To Create A Material Style Action Bar On KitKat And Older Android Versions

Android应用开发中的风格和主题(style,themes)


这篇关于改变ActionBar右侧三个小点的颜色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/294853

相关文章

react笔记 8-18 事件 方法 定义方法 获取/改变数据 传值

1、定义方法并绑定 class News extends React.Component {constructor(props) {super(props)this.state = {msg:'home组件'}}run(){alert("我是一个run") //方法写在类中}render() {return (<div><h2>{this.state.msg}</h2><button onCli

hot100刷题第1-9题,三个专题哈希,双指针,滑动窗口

求满足条件的子数组,一般是前缀和、滑动窗口,经常结合哈希表; 区间操作元素,一般是前缀和、差分数组 数组有序,更大概率会用到二分搜索 目前已经掌握一些基本套路,重零刷起leetcode hot 100, 套路题按套路来,非套路题适当参考gpt解法。 一、梦开始的地方, 两数之和 class Solution:#注意要返回的是数组下标def twoSum(self, nums: Lis

渐变颜色填充

GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。 [cpp]  view plain copy print ? BOOL GradientFill(     _In_  HDC hdc,     _In_  PTRIVERTEX pVertex,     _In_  ULONG

【前端】animation动画以及利用vue制作简单的透明度改变动画,包含vue生命周期实现

一. 问题描述 想做一个文字透明度从1到0然后再从0到1的css动画。 二. 代码写法 2.1 animation写法 2.1.1 animation属性key 2.1.2 代码展示 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=de

【虚拟机/服务器】非图形化界面下修改Shell中颜色的设置

1、首先 cd ~ && ll 可以看到如下图所示 2、输入 sudo vim .bashrc 进入 .bashrc 并通过 /PS1 迅速从上往下定位第一个PS1 3、输入 i 进入插入模式后修改 else 下面的配置如下 说明:\e[1;32;40m] 其中1表示高亮显示,32表示字体颜色是绿色,40表示背景色为黑色 4、输入 esc 退出编辑模式到命令模式,再输入

OOP三个基本特征:封装、继承、多态

OOP三个基本特征:封装、继承、多态 C++编程之—面向对象的三个基本特征 默认分类 2008-06-28 21:17:04 阅读12 评论1字号:大中小     面向对象的三个基本特征是:封装、继承、多态。     封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。   封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信

HTML5如何成为改变移动互联网幕后的推手

在未来的某一天,我们打开手机,不再需要访问手机应用商店,不论是 Apple的还是Google的,我们只需要点击手机主菜单页面上的一个链接,手机就会立即在它的浏览器上启动一个 “应用程序”;再也不需要flash插件,就能欣赏华丽丽视频画面。   AD:2013云计算架构师峰会课程资料下载   2012年,说HTML5集千宠万爱于一身也毫不夸张,IE、Chrome、Firefox和Opera等

Excel查询颜色RGB值

1.选中单元格,点右键,设置单元格格式-填充-其他颜色-自定义,下面显示的就是该单元格颜色的RGB值 2.与十六进制换算: https://www.sioe.cn/yingyong/yanse-rgb-16/

三个同步与互斥问题之生产者与消费者

#include<stdio.h> #include<pthread.h> pthread_mutex_t  mutex; #define Max 10 pthread_cond_t pro; pthread_cond_t con; int buffer=0;//全局变量----一开始为0,只有生产者可以执行 void deal_produce(