zoukankan      html  css  js  c++  java
  • 搜索框(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组件显示自动完成列表。

    运行结果如下:

  • 相关阅读:
    好的Qt学习资料
    QT QMap介绍与使用
    Qt缺少调试器
    vs2012+Qt5.3.1环境添加新的ui界面的方法
    QT定时器的使用
    Qt中forward declaration of struct Ui::xxx的解决
    linux-svn命令
    如何编写Windows服务
    为你的爬虫提提速?
    Python爬虫的N种姿势
  • 原文地址:https://www.cnblogs.com/de1021/p/11845109.html
Copyright © 2011-2022 走看看