Android 开发之自定义 SearchView
2016-07-30 07:36
489 查看
Android 开发之自定义 SearchView
概述官方的 SearchView 不好用,除了自己组装一个搜索框之外,完全可以在官方基础上改,以保证能满足大多数需求。
详情见代码和注释
public class MySearchView extends SearchView { public MySearchView(Context context) { super(context); styleSearchView(); } public MySearchView(Context context, AttributeSet attrs) { super(context, attrs); styleSearchView(); } public void styleSearchView() { //设置背景 this.setBackgroundResource(R.drawable.search_bg); //提示文本内容 this.setQueryHint("请搜索"); //默认展开 this.setIconifiedByDefault(false); //去除下划线 int plateId = this.getContext().getResources().getIdentifier("android:id/search_plate", null, null); LinearLayout plate = (LinearLayout)this.findViewById(plateId); plate.setBackgroundColor(Color.TRANSPARENT); //设置搜索框EditText int searchPlateId = this.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); EditText searchPlate = (EditText)this.findViewById(searchPlateId); //提示文本颜色 searchPlate.setHintTextColor(getResources().getColor(R.color.white)); searchPlate.setTextColor(Color.WHITE); searchPlate.setBackgroundColor(Color.TRANSPARENT); searchPlate.setGravity(Gravity.CENTER); //设置光标样式 try { Field f = TextView.class.getDeclaredField("mCursorDrawableRes"); f.setAccessible(true); f.set(searchPlate, R.drawable.cursor); } catch (Exception e) { e.printStackTrace(); } //自定义搜索图标 int search_mag_icon_id = this.getContext().getResources().getIdentifier("android:id/search_mag_icon", null, null); ImageView search_mag_icon = (ImageView) this.findViewById(search_mag_icon_id); search_mag_icon.setImageResource(R.drawable.widget_search_icon); search_mag_icon.setScaleType(ImageView.ScaleType.CENTER); //自定义清除图标 int search_close_icon_id = this.getContext().getResources().getIdentifier("android:id/search_close_btn", null, null); ImageView search_close_btn = (ImageView) this.findViewById(search_close_icon_id); search_close_btn.setImageResource(R.drawable.widget_search_del); } }
总结:
完全自定义 searchview 就是这么简单
相关文章推荐
- android searchView的关闭事件
- jquery mobile 实现自定义confirm确认框效果的简单实例
- C#实现自定义双击事件
- WinForm实现自定义右下角提示效果的方法
- 一款超酷的Android自定义加载控件
- Android自定义View实现照片裁剪框与照片裁剪功能
- MFC自定义消息的实现方法
- C#实现ProperTyGrid自定义属性的方法
- php自定义错误处理用法实例
- ThinkPHP中自定义目录结构的设置方法
- C#自定义事件监听实现方法
- C#自定义事件及用法实例
- C#自定义签名章实现方法
- C#中使用IFormattable实现自定义格式化字符串输出示例
- javascript 自定义常用方法第1/2页
- Android搜索框组件SearchView的基本使用方法
- 谈谈JavaScript自定义回调函数
- 自定义jQuery插件方式实现强制对象重绘的方法
- jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
- jQuery实现自定义checkbox和radio样式