关于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


1 0