Android 开发之自定义 SearchView

来源:互联网 发布:vcr制作软件下载 编辑:程序博客网 时间:2024/05/22 08:10

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 就是这么简单

0 0
原创粉丝点击