首页 > 代码库 > android SearchView 样式修改
android SearchView 样式修改
try { Class<?> argClass=mSearchView.getClass(); //指定某个私有属性 Field mSearchHintIconField = argClass.getDeclaredField("mSearchHintIcon"); mSearchHintIconField.setAccessible(true); View mSearchHintIcon = (View)mSearchHintIconField.get(mSearchView); mSearchHintIcon.setVisibility(View.GONE); //注意mSearchPlate的背景是stateListDrawable(不同状态不同的图片) 所以不能用BitmapDrawable Field ownField = argClass.getDeclaredField("mSearchPlate"); //setAccessible 它是用来设置是否有权限访问反射类中的私有属性的,只有设置为true时才可以访问,默认为false ownField.setAccessible(true); View mView = (View) ownField.get(mSearchView); mView.setBackground(getResources().getDrawable(R.drawable.contacts_search_writebg)); //指定某个私有属性 Field mQueryTextView = argClass.getDeclaredField("mQueryTextView"); mQueryTextView.setAccessible(true); Class<?> mTextViewClass = mQueryTextView.get(mSearchView).getClass().getSuperclass().getSuperclass().getSuperclass(); //mCursorDrawableRes光标图片Id的属性 这个属性是TextView的属性,所以要用mQueryTextView(SearchAutoComplete) //的父类(AutoCompleteTextView)的父 类( EditText)的父类(TextView) Field mCursorDrawableRes = mTextViewClass.getDeclaredField("mCursorDrawableRes"); //setAccessible 它是用来设置是否有权限访问反射类中的私有属性的,只有设置为true时才可以访问,默认为false mCursorDrawableRes.setAccessible(true); //注意第一个参数持有这个属性(mQueryTextView)的对象(mSearchView) 光标必须是一张图片不能是颜色,因为光标有两张图片, //一张是第一次获得焦点的时候的闪烁的图片,一张是后边有内容时候的图片,如果用颜色填充的话,就会失去闪烁的那张图片, //颜色填充的会缩短文字和光标的距离(某些字母会背光标覆盖一部分)。 mCursorDrawableRes.set(mQueryTextView.get(mSearchView), R.drawable.icon_small_add_delete); } catch (Exception e) { e.printStackTrace(); }
参考原文:http://blog.csdn.net/chenshijun0101/article/details/21521137
android SearchView 样式修改
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。