android menu枚举,Android 修改Menu字体颜色和背景

我们知道,在Android中修改TextView的字体颜色,一般是通过setTextColor()方法。虽说Android的Menu菜单项的每一项都是由TextView组成,但是Android的sdk并没有给出具体设置Menu的颜色的api。一般我们只能通过修改Theme来间接修改Menu的样式,但如果需要对单独的某一个Menu修改颜色,这种方法又不行了。

stackoverflow上提出了另外一种方法,即LayoutInflater.Factory,当你通过LayoutInflater去创建一个view或menu时,你就可以通过实现自己的LayoutInflater.Factory来定制自己的View。相关代码如下:

getLayoutInflater().setFactory(new android.view.LayoutInflater.Factory(){

@Override

public View onCreateView(String name, Context context, AttributeSet attrs) {

if (name.equalsIgnoreCase("com.android.internal.view.menu.ActionMenuItemView")) {

try{

LayoutInflater f = LayoutInflater.from(context);

final View view = f.createView(name, null, attrs);

if(view instanceof TextView) {

TextView menuTv = ((TextView)view);

//这里你就可以修改TextView的字体颜色,大小,背景等等.

menuTv.setTextColor(getResources().getColor(R.color.action_bar_button_text_color));

}

return view;

}catch (InflateException e) {

e.printStackTrace();

}catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

return null;

}

});

其实,还有另外一种方法。我们知道修改Menu的标题是通过

public MenuItem setTitle(CharSequence title);

这里,介绍一个类SpannableString给大家,如果你做个聊天的表情相关的应用,那么你一定对这个类很熟悉,首先

我们来看下这个类的声明:

public class SpannableString extends SpannableStringInternal implements CharSequence, GetChars, Spannable

可以清楚的看到SpannableString是实现了CharSequence接口的,所以我们可以通过构建一个SpannableString来

间接的修改Menu的字体和颜色。这里我们使用了SpannableStringBuilder,相关代码如下:

/*

* Add color to a given text

*/

private SpannableStringBuilder addColor(CharSequence text, int color) {

SpannableStringBuilder builder = new SpannableStringBuilder(text);

if (color != 0) {

builder.setSpan(new ForegroundColorSpan(color), 0, text.length(),

Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

}

return builder;

}

Android 修改 Menu字体颜色

转载:http://blog.youkuaiyun.com/jayyuz/article/details/55260996 @Override public boolean onCreateOptionsMenu ...

Android自定义Button字体颜色和背景颜色

http://blog.youkuaiyun.com/breeze666/article/details/7747649

修改tabbar 字体颜色

NSDictionary *seletedTextAttrs = @{NSForegroundColorAttributeName:[UIColor orangeColor]}; 修改tabbar 字 ...

如何修改CAD字体颜色?试试这种方法

CAD中编辑图纸的时候,使用的CAD制图软件来进行绘制,图纸中的CAD字体颜色都是默认的颜色,这样不方便进行查看.这个时候就需要修改CAD字体颜色了,那么如何修改CAD字体颜色呢?具体要怎么来进行操作 ...

delphi DBGrid简单自绘(字体颜色、背景等)

delphi DBGrid简单自绘(字体颜色.背景等)  从网上找的代码 应该是C#写的,其实delphi 的操作类似: 1 2 3 4 5 6 7 8 9 10 11 12 13 void __fa ...

Android RadioGroup的RadioButton 选择改变字体颜色和背景颜色

RadioGroup

RadioGroup 的 RadioButton 选择改变字体颜色和背景颜色

RadioGroup

css 修改placeholder字体颜色字体大小 修改input记住账号密码后的默认背景色

壹 ❀ 引 本来这个阶段的项目页面都是给实习生妹子做的,我只用写写功能接接数据,但这两天妹子要忙翻译,这个工作阶段也快结束了导致有点慌,只能自己把剩余的几个小页面给写了. 那么做页面的过程中,UI也 ...

UIImagePickerController导航字体颜色和背景

创建UIImagePickerController // 创建图片选择器 UIImagePickerController *picker = [[UIImagePickerController all ...

随机推荐

PostgreSQL Replication之第十三章 使用PL/Proxy扩展(2)

13.2 设置 PL/Proxy 简短的理论介绍之后,我们可以继续前进并运行一些简单的PL/Proxy设置.要做到这一点,我们只需安装PL/Proxy并看看这是如何被使用的. 安装PL/Proxy是一 ...

SQL Server数据库(SQL Sever语言 函数以及SQL编程)

1.数学函数:操作一个数据,返回一个结果 --去上限: ceiling ☆select ceiling(price) from car --去下限:floor ☆select floor(price) ...

LeetCode Binary Tree Postorder Traversal(数据结构)

题意: 用迭代法输出一棵二叉树的后序遍历结果. 思路: (1)用两个栈,一个存指针,一个存标记,表示该指针当前已经访问过哪些孩子了. /** * Definition for a binary tre ...

Oracle中对表的操作

表的创建与管理 创建表: CREATE TABLE TABLE_NAME ( COLUMN_NAME TYPE [DEFAULT VALUE], COLUMN_NAME TYPE [DEFAULT V ...

SetDlgItemText控件运行错误

SetDlgltem函数把一个WM_SETTEXT消息发送到指定的控件. 今天在测试一个小程序,发现使用SetDlgItemText控件编译没问题,但是运行就出错误. 语句为: time=CTime: ...

Python第三天 序列 数据类型 数值 字符串 列表 元组 字典

Python第三天 序列  数据类型  数值  字符串  列表  元组  字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...

java继承中的初始化顺序

初始化顺序:父类的静态变量-->父类的静态代码块-->子类的静态变量-->子类的静态代码快-->父类的非静态变量(父类的非静态代码块)-->父类的构造函数-->子类 ...

XV Open Cup named after E.V. Pankratiev. GP of America

A. Area of Effect 首先最优解中必有一个点在圆的边界上. 若半径就是$R$,则枚举一个点,然后把剩下的事件极角扫描即可,时间复杂度$O(m(n+m)\log(n+m))$. 否则圆必然 ...

Cartfile学习参考博客

1.http://www.cnblogs.com/xuruofan/p/6000864.html 2.http://www.jianshu.com/p/5ccde5f22a17

I/O模型(同步、非同步、阻塞、非阻塞)总结

I/O:同步(synchronous).异步(asynchronous).阻塞(blocking).非阻塞(nonblocking) 1.I/O内部机制 出于安全考虑,用户程序(用户态)是没办法直接操 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值