关于SearchView设置字体颜色,提示字体及背景的解决方法
来源:互联网 发布:淘宝客服晚上几点下班 编辑:程序博客网 时间:2024/05/20 13:07
最近由于项目的需要搜索功能,我们为了方便,则用android自带的搜索组件------SearchView,使用起来方便快捷,但是SearchView默认的提示字和需要输入的字符往往与界面不是很匹配,导致用户体现效果不是很好,由于本人是菜鸟,遇见问题的第一反应就是查找资料和找度娘,在查找的过程中发现许多初学的猿们也在为这个问题忧愁,所以我就把我所了解的一小小的解决方法分享出来,是大家一起学习。言归正传,下面我们一起来学习一下吧
(1)我们必须了解SearchView的输入框是TextView,我们想修改输入框字体的颜色,背景等丰富的界面,我们必须得到TextView,其实质就是修改TextView,需求明白了,问题来就简单了。那我们怎样获得TextView控件,相信大家对在java程序中获得xml中的控件很熟悉吧(通过控件的id获取控件),我们也用同样的方法,下面就是通过id 或的TextView的方法:
int id = sv_search.getContext().getResources()
.getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) sv_search.findViewById(id);
简简单单的两行代码就可以得到TextView,看见之后是不是感觉很简单啊。之后就可以修改我们想要的效果了。
(2)通过上面的方法几乎可以解决大多数的问题,但是要修改提示字符的大小和颜色就不能按上面的要求了。在解决问题前我们必须知道在android控件中输入的文本值不是String类型,而是SpannableString ,所以 我们想修改提示字符的颜色,直接修改SpannableString 类型的颜色和大小就可以了,方法如下:
SpannableString spanText = new SpannableString("请输入需要查询内容");
// 设置字体大小
spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
// 设置字体颜色
spanText.setSpan(new ForegroundColorSpan(Color.WHITE), 0,
spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
sv_search.setQueryHint(spanText);
通过上面的方法就可以解决相应的问题了,下面是我写的对SearchView设置的方法:
/*
* 设置SearchView的相关属性
*/
public void setSearch(SearchView sv_search) {
// 设置SearchView默认是否自动缩小为图标
sv_search.setIconifiedByDefault(true);
// 显示搜索按钮
sv_search.setSubmitButtonEnabled(true);
SpannableString spanText = new SpannableString("请输入需要查询内容");
// 设置字体大小
spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
// 设置字体颜色
spanText.setSpan(new ForegroundColorSpan(Color.WHITE), 0,
spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
sv_search.setQueryHint(spanText);
int id = sv_search.getContext().getResources()
.getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) sv_search.findViewById(id);
textView.setTextSize(20);// 设置输入字体大小
textView.setTextColor(Color.GREEN);// 设置输入字的显示
textView.setHeight(50);// 设置输入框的高度
textView.setGravity(Gravity.BOTTOM);// 设置输入字的位置
}
以上是我个人根据需要所写,由于本人是菜鸟,知识有限,有不正确的地方欢迎大家提出,俗话说“错误可以使人进步”。
如果对SpannableString 不了解的同学可以参考http://blog.csdn.net/lan410812571/article/details/9083023
- 关于SearchView设置字体颜色,提示字体及背景的解决方法
- 关于SearchView设置字体颜色,提示字体及背景的解决方法
- Eclipse设置背景颜色、字体及代码提示
- 设置对话框背景颜色及字体颜色
- 关于设置对话框的背景颜色,和设置控件的字体颜色或背景颜色
- 关于设置对话框的背景颜色,和设置控件的字体颜色或背景颜色
- 关于设置对话框的背景颜色,和设置控件的字体颜色或背景颜色VC++
- Eclipse背景颜色及字体设置
- 3、如何设置SecureCRT的字体及背景颜色
- 动态设置Edit控件的背景及字体颜色
- 动态设置Edit控件的背景及字体颜色
- eclipse 软件的背景颜色、字体设置
- Gvim的字体、颜色、背景设置
- eclipse 软件的背景颜色、字体设置
- eclipse 软件的背景颜色、字体设置
- gVim的字体和背景颜色设置
- 设置RGui的背景颜色和字体
- Gvim的字体、颜色、背景设置
- Struts2 Convention Plugin ( struts2 零配置 )
- 向上转型的理解
- Android之如何解决popupWindow(pw.setFocusable(true))按返回键和menu键退出
- List,set,Map 的用法和区别
- iOS自定义TabBar
- 关于SearchView设置字体颜色,提示字体及背景的解决方法
- php composer
- OpenCV成长之路(9):特征点检测与图像匹配
- iOS自定义UITabBar的几种方法
- OpenCV2用均值漂移(Mean Shift)查找物体
- Linux下matlab断点调试
- ORA-12154: TNS: 无法解析指定的连接标识符
- init 和 initWithCapacity
- TCP,IP详解,卷一:协议学习笔记之第十七章 TCP:传输控制协议