搜索框(SearchView)用法

SearchView是Android原生的搜索框控件,它提供了一个用户界面,可以让用户在文本框内输入文字,并允许通过看监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索。

SearchView属性如下:

XML属性

相关方法

说明

Android:IconifiedByDefault(Boolean iconified)

setIconifiedByDefault(boolean)

设置该搜索框默认是否自动缩小为图标

android:imeOptions

setImeOptions(int)

设置输入法搜索选项字段,默认是搜索,可以是:下一页、发送、完成等

android:inputType

setInputType(int)

设置输入类型

android:maxWidth

setMaxWidth(int)

设置最大宽度

android:queryHint

setQueryHint(CharSequence)

设置查询提示字符串

使用SearchView时可使用如下常用方法。

setIconifiedByDefault(Boolean iconified):设置该搜索框默认是否自动缩小为图标。

setSubmitButtonEnabled(Boolean enabled):设置是否显示搜索按钮。

setQueryHint(CharSequence hint):设置搜索框内默认显示的提示文本。

setOnQueryTextListener(SearchView.OnQueryTextListener listener):为该搜索框设置事件监听器。

如果为SearchView增加一个配套的ListView,则可以为SearchView增加自动完成功能。下面实例示范如何使用SearchView。

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <!--定义一个SearchView-->
    <SearchView
        android:id="@+id/searchview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <!--为SearchView定义自动完成的ListView-->
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>

主程序如下:

public class MainActivity extends AppCompatActivity {

    private String[] mStrings = new String[]{"说好不哭", "等你下课", "不爱我就拉到", "123456"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ListView listView = findViewById(R.id.listview);
        listView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, mStrings));
        //设置ListView启用过滤
        listView.setTextFilterEnabled(true);
        SearchView searchView = findViewById(R.id.searchview);
        //设置该SearchView默认是否自动缩小为图标
        searchView.setIconifiedByDefault(false);
        //设置该SearchView显示搜索按钮
        searchView.setSubmitButtonEnabled(true);
        searchView.setQueryHint("查找");
        //为该SearchView组件设置事件监听器
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            //单机搜索按钮时激发该方法
            @Override
            public boolean onQueryTextSubmit(String query) {
                //实际应用中应该在该方法内执行实际查询,此处仅使用Toast显示用户输入的查询内容
                Toast.makeText(MainActivity.this, "你的选择是:" + query,
                        Toast.LENGTH_SHORT).show();
                return false;
            }

            //用户输入字符时激发该方法
            @Override
            public boolean onQueryTextChange(String newText) {
                //如果newText不是长度为0的字符串
                if (TextUtils.isEmpty(newText)) {
                    //清除ListView的过滤
                    listView.clearTextFilter();
                } else {
                    //使用用户输入的内容对ListView的列表项进行过滤
                    listView.setFilterText(newText);
                }
                return true;
            }
        });
    }
}

本例中定义了一个ListView组件用于为SearchView组件显示自动完成列表。

运行结果如下:

 

posted @ 2019-11-12 20:50  Fantasy1021  阅读(11438)  评论(0编辑  收藏  举报