SearchView的简单使用和模拟搜索

来源:互联网 发布:程序编程范式是什么 编辑:程序博客网 时间:2024/06/05 07:53

android SearchView其实就是EditView添加了一些方法,可以达到搜索的功能,首先先看它的布局文件,这是v7包下的SearchView

<android.support.v7.widget.SearchView    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/find_serach"    app:queryHint="请输入搜索的文字"    ></android.support.v7.widget.SearchView>其中queryHint就是默认文字,这里还可以设置自定义的文字颜色和背景,剩下主要是代码部分,我先为大家介绍几个方法,我亲自测试过的:
1.setIconifiedByDefault()是设置搜索框是否默认展开;2.
setSubmitButtonEnabled()是否设置一个提交按钮;其他功能看下表:

SearchView属性

属性名称相关方法描述android:iconifiedByDefaultsetIconifiedByDefault(boolean)设置搜索图标是否显示在搜索框内   android:imeOptionssetImeOptions(int)设置输入法搜索选项字段,默认是搜索,可以是:下一页、发送、完成等   android:inputTypesetInputType(int)设置输入类型   android:maxWidthsetMaxWidth(int)设置最大宽度   android:queryHintsetQueryHint(CharSequence)设置查询提示字符串
监听方法:
setOnQueryTextListener();这是监听我们搜索时,和搜索后的方法,它内含两个方法
onQueryTextSubmit(String query)这是提交时的方法,可以根据你提交的内容进行相应的搜索操作,
onQueryTextChange(String newText)这是在搜索框内输入内容时,可以像百度,淘宝,搜索时模糊推荐选项,供你选择;其他也没什么了,接下来看完整代码:
public class FindActivity extends AppCompatActivity implements SearchView.OnQueryTextListener {    private SearchView searchView;    private List<String> data=new ArrayList<>();    private ListView lv;    private List<String> arr;    @Override    protected void onCreate(Bundle savedInstanceState) {        getSupportActionBar().hide();        super.onCreate(savedInstanceState);        arr = new ArrayList<>();        searchView = (SearchView) findViewById(R.id.find_serach);        searchView.setIconifiedByDefault(false);        searchView.setSubmitButtonEnabled(true);        searchView.setOnQueryTextListener(this);        lv = (ListView) findViewById(R.id.lv_query_name);        for (int i = 0; i < 10; i++) {            arr.add("data"+i);        }        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, arr));//给listVIew设置可过滤的操作        lv.setTextFilterEnabled(true);    }    @Override    public boolean onQueryTextSubmit(String query) {//跳转到手机自带的浏览器百度或者谷歌        Intent intent = new Intent();        intent.setAction(Intent.ACTION_WEB_SEARCH);        intent.putExtra(SearchManager.QUERY, query);        startActivity(intent);        return false;    }    @Override    public boolean onQueryTextChange(String newText) {//判断是否输入内容,并进入过滤操作        if(!TextUtils.isEmpty(newText))        {            lv.setFilterText(newText);        }        else        {            lv.clearTextFilter();        }        return false;    }}



分享到此结束,请多多指教,希望对你们有些帮助。