首页 > 学院 > 开发设计 > 正文

最简单的自定义Toolbar SearchView样式方法

2019-11-06 09:52:37
字体:
来源:转载
供稿:网友

Android toolbar的灵活性很高,因为它本身就是一个ViewGroup,所以可以通过添加自定义view的形式自行设置标题的样式,这样既不就能满足大部分需求了。 本次主要说一下使用SearchView的时候,如何自定义它的样式。

网上大部分都是通过获取SearchView里的控件如EditText来修改它的样式,主要代码如下: SearchView searchView = (SearchView) findViewById(R.id.search); int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); TextView textView = (TextView) searchView.findViewById(id); textView.setTextColor(getResources().getColor(R.color.black6)); textView.setHintTextColor(getResources().getColor(R.color.lightgrey)); 这个方法简单粗暴(本人并未实践),但是个人感觉有点麻烦且不够优雅。如果很多页面需要用到的话search的话都需要添加这么一段代码,比较繁琐。那有没有一个一劳永逸的方法呢?答案是肯定的!

其实我们可以通过设置style的方式来进行简单的修改。

<style name="Widget.SearchView" parent="Widget.AppCompat.SearchView"> <item name="defaultQueryHint">请输入关键字</item> <item name="queryBackground">@drawable/abc_textfield_search_material</item> <item name="submitBackground">@drawable/abc_textfield_search_material</item> <item name="closeIcon">@drawable/abc_ic_clear_mtrl_alpha</item> <item name="searchIcon">@drawable/abc_ic_search_api_mtrl_alpha</item> <item name="searchHintIcon">@drawable/abc_ic_search_api_mtrl_alpha</item> <item name="goIcon">@drawable/abc_ic_go_search_api_mtrl_alpha</item> <item name="voiceIcon">@drawable/abc_ic_voice_search_api_mtrl_alpha</item> <item name="commitIcon">@drawable/abc_ic_commit_search_api_mtrl_alpha</item> </style>

通过这个style可以设置searchview的默认hint,EditText的背景和一些icon等等。然后在APP的Theme中添加<item name="searchViewStyle">@style/Widget.SearchView</item> 。 但是现在textview的字体颜色还无法定义。可以在APP的Theme中添加如下属性设置:

<!--searchview 文字及图标颜色--> <item name="android:textColorPRimary">@color/textColorPrimary</item> <item name="android:textColorHint">@android:color/white</item>

以上基本就能统一设置searchview的样式了。因为一些属性比如android:textColorPrimary在设置过程中可能和别的页面中样式存在冲突,这个就需要自己考量了,不过一般在activity中各个EditText或者Textview还是自定义颜色比较好而且也方便,所以应该不存在大问题。

另:Toolbar中如果设置溢出图标样式? 这里只说个简单的,Android系统默认提供两种样式分别适配Light和Dark主题,这里只能是在Dark中使用Light样式的图标,或者Light中使用Dark图标,如果超过这两种就得自己定义了。 方法是添加如下属性到自己的Theme中

<!--toobar 溢出图标颜色--> <item name="android:textColorSecondary">@android:color/white</item>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表