android设置搜索功能,Android搜索框SearchView属性和用法详解

SearchView简介

SearchView是Android原生的搜索框控件,它提供了一个用户界面,用于用户搜索查询。

SearchView默认是展示一个search的icon,点击icon展开搜索框,如果你想让搜索框默认就展开,可以通过setIconifiedByDefault(false);实现。

SearchView属性

SearchView使用

xml中定义SearchView:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_margin="15dp"

android:orientation="vertical"

tools:context="com.airsaid.searchviewdemo.MainActivity">

android:id="@+id/searchView"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:iconifiedByDefault="false"

android:queryHint="请输入搜索内容" />

android:id="@+id/listView"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1" />

Main代码:

public class MainActivity extends AppCompatActivity {

private String[] mStrs = {"aaa", "bbb", "ccc", "airsaid"};

private SearchView mSearchView;

private ListView mListView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mSearchView = (SearchView) findViewById(R.id.searchView);

mListView = (ListView) findViewById(R.id.listView);

mListView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, mStrs));

mListView.setTextFilterEnabled(true);

// 设置搜索文本监听

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

// 当点击搜索按钮时触发该方法

@Override

public boolean onQueryTextSubmit(String query) {

return false;

}

// 当搜索内容改变时触发该方法

@Override

public boolean onQueryTextChange(String newText) {

if (!TextUtils.isEmpty(newText)){

mListView.setFilterText(newText);

}else{

mListView.clearTextFilter();

}

return false;

}

});

}

}

效果截图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用SearchView和RecyclerView来实现Android中的搜索功能,并且在搜索结果中高亮显示匹配的文本。下面是实现的简要步骤: 1. 首先,在你的布局文件中添加SearchView和RecyclerView。 2. 在Activity或Fragment中,找到SearchView设置搜索监听器。在监听器的onQueryTextChange方法中,获取用户输入的搜索关键字,并更新RecyclerView的数据源。 3. 在RecyclerView的Adapter中,实现一个过滤方法来根据搜索关键字过滤数据源。这个过滤方法可以使用String类的contains方法来判断是否存在匹配的文本。 4. 在过滤方法中,你可以使用SpannableString类来对匹配的文本进行高亮处理。使用ForegroundColorSpan类来设置高亮文本的颜色。 这是一个简单的示例代码,帮助你更好地理解: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> dataList; private List<String> filteredDataList; private String searchText; // Adapter构造函数和其他方法... public void filter(String text) { searchText = text.toLowerCase(); filteredDataList.clear(); if (searchText.isEmpty()) { filteredDataList.addAll(dataList); } else { for (String item : dataList) { if (item.toLowerCase().contains(searchText)) { filteredDataList.add(item); } } } notifyDataSetChanged(); } // ViewHolder和其他方法的实现... @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { String item = filteredDataList.get(position); // 高亮处理 if (!searchText.isEmpty()) { int startPos = item.toLowerCase().indexOf(searchText); int endPos = startPos + searchText.length(); if (startPos != -1) { SpannableString spannableString = new SpannableString(item); ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED); spannableString.setSpan(colorSpan, startPos, endPos, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); holder.textView.setText(spannableString); } else { holder.textView.setText(item); } } else { holder.textView.setText(item); } } } ``` 这只是一个简单的示例,你可以根据实际需求进行修改和扩展。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值