1.改变样式
SearchView界面是固定的,比较难调整样式,根据其ui布局,可以获取到里面的ui控件,从而进行修改样式:
private void initSearView(SearchView searchView) {
ImageView mSearchButton = (ImageView) searchView.findViewById(R.id.search_button);
ImageView mGoButton = (ImageView) searchView.findViewById(R.id.search_go_btn);
ImageView mCloseButton = (ImageView) searchView.findViewById(R.id.search_close_btn);
ImageView mVoiceButton = (ImageView) searchView.findViewById(R.id.search_voice_btn);
ImageView mCollapsedIcon = (ImageView) searchView.findViewById(R.id.search_mag_icon);
TextView textview = (TextView) mSearchView.findViewById(R.id.search_src_text);
//搜索按钮图标
mSearchButton.setImageResource(R.mipmap.ic_search);
if(textview!=null){//文字颜色大小
textview.setTextSize(17);
textview.setTextColor(Color.WHITE);
textview.setHintTextColor(Color.WHITE);
}
//光标颜色
try {
Field mCursorDrawableRes=TextView.class.getDeclaredField("mCursorDrawableRes");
mCursorDrawableRes.setAccessible(true);
mCursorDrawableRes.set(textview, R.drawable.shape_searchview_cursor_color);
} catch (Exception e){
}
}
其ui布局文件,可以在v7包下找到abc_search_view.xml文件。
通过其布局文件,可以看得出,搜索按钮是在线性布局左边,所以在屏幕中使searchview居右时,点击弹出输入框,发现输入框不能铺满屏幕宽度。这时我想了个比较巧妙的方法,让searchview在线性布局里面,该线性布局有两个view,一个是searchview,一个是占位view,占位view占满一定比例的位置,searchview设置为铺满屏幕。这样,监听到searchview点击搜索时,让占位view移除,就能铺满屏幕宽度了。