android searchview设置

这篇博客主要介绍了如何在Android中自定义SearchView的样式,包括修改搜索按键图标、背景、文字颜色、光标颜色,并提供了相关代码示例。同时,还展示了如何设置OnQueryTextListener来处理查询提交事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ii_grade_search_new = (SearchView) findViewById(R.id.ii_grade_search_new);
        ii_grade_search_new.setSubmitButtonEnabled(true);
        ii_grade_search_new.setIconified(false);
        ii_grade_search_new.set();
        //通过反射,修改默认的样式,search_view.xml

        try {
            //修改搜索按键图标
            Field field = ii_grade_search_new.getClass().getDeclaredField("mSubmitButton");
            field.setAccessible(true);
            ImageView iv = (ImageView) field.get(ii_grade_search_new);
            iv.setImageDrawable(context.getResources().getDrawable(
                    R.drawable.ico_search));

            //修改background
//            field= ii_grade_search_new.getClass().getDeclaredField("mSearchEditFrame");
//            field.setAccessible(true);
//            View ivEdit = (View) field.get(ii_grade_search_new);
//            ivEdit.setBackground(context.getResources().getDrawable(R.drawable.list_border));

//            //只修改搜索框样式
//            Field ownField = ii_grade_search_new.getClass().getDeclaredField("mSearchPlate");
//            //setAccessible 设置是否有权限访问反射类中的私有属性的,只有设置为true时才可以访问,默认为false
//            ownField.setAccessible(true);
//            View mView = (View) ownField.get(ii_grade_search_new);
//            mView.setBackground(context.getResources().getDrawable(R.drawable.list_border));

            //修改文字颜色
            int id = ii_grade_search_new.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
            TextView textView = (TextView) ii_grade_search_new.findViewById(id);
            textView.setTextColor(Color.BLACK);

            int ida = ii_grade_search_new.getContext().getResources().getIdentifier("android:id/search_badge", null, null);
            View idaView =  ii_grade_search_new.findViewById(ida);
            idaView.setBackgroundResource(R.drawable.ico_search);

            //修改光标颜色
            field =ii_grade_search_new.getClass().getDeclaredField("mQueryTextView");
            field.setAccessible(true);
            Class<?> mTextViewClass = field.get(ii_grade_search_new).getClass().getSuperclass().getSuperclass().getSuperclass();
         
            Field mCursorDrawableRes = mTextViewClass.getDeclaredField("mCursorDrawableRes");
            mCursorDrawableRes.setAccessible(true);
            mCursorDrawableRes.set(field.get(ii_grade_search_new), R.drawable.ico_search_cursor);

        } catch (Exception e) {

            e.printStackTrace();
        }

        ii_grade_search_new.setOnQueryTextListener(new android.widget.SearchView.OnQueryTextListener() {

            @Override
            public boolean onQueryTextSubmit(String query) {
                url_search_grade = context.getString(R.string.url) +
                        context.getString(R.string.port_user) +
                        context.getString(R.string.url_search_grade) +
                        GlobalParams.USERID + "&item=" + query;
                showSearchGradeDialog();
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值