关于searchView的黑框去除问题

本文介绍了一种有效去除Android SearchView组件中黑框的方法。通过调整SearchView的文本颜色及提示文字颜色,并利用适配器的过滤功能而非ListView自带的过滤机制,可以成功避免黑框出现,提供更佳的用户体验。

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

关于searchView的黑框去除问题

发现很多人都遇到了这个问题,希望可以帮助到你们


图片名称

简单粗暴直接上代码

     adapter = new MyAdapter(this,R.layout.insect,mBackData);
     //mBabckDate是自定义的过滤内容( List<viewContent> mBackData = new ArrayList<viewContent>(); )

     listView.setAdapter(adapter);//适配器
    mSearchView = (SearchView) findViewById(R.id.searchView);

    //设置false无法自动获取焦点,防止软键盘自动跳出。
    mSearchView.setFocusable(false);

    //SearchView 修改字体颜色和Hint颜色
    int id = mSearchView.getContext().getResources()
    .getIdentifier("android:id/search_src_text", null, null);
    TextView textView = (TextView) mSearchView.findViewById(id);
    textView.setTextColor(Color.BLACK);       
    textView.setHintTextColor(Color.parseColor("#CCCCCC"));
    textView.setHintTextColor(getResources().getColor(R.color.black));

    // 设置搜索文本监听
    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        // 当点击搜索按钮时触发该方法

        public boolean onQueryTextSubmit(String query) {
            return false;
        }
        // 当搜索内容改变时触发该方法
        public boolean onQueryTextChange(String newText) {

        if (!TextUtils.isEmpty(newText)){//判断输入是否为空
               listView.setFilterText(newText);//进行过滤
            }else{
                listView.clearTextFilter();
            }
            return true;
        }
    });

上面的监听事件中会自动会自动触发黑框,其实修改非常简单,只要不用listview自带的过滤机制就好,通过适配器过滤就可以完美地解决这个问题。
图片名称

public boolean onQueryTextChange(String newText) {
            adapter.getFilter().filter(newText);//通过适配器过滤
            return true;
        }

希望可以帮助到您!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值