Android 开发之自定义 SearchView

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值