Android 搜索框:SearchView的属性和用法详解(java)

SearchView是Android原生的搜索框控件,它提供了一个用户界面,用于用户搜索查询。 
SearchView默认是展示一个search的icon,点击icon展开搜索框,如果你想让搜索框默认就展开,可以通过setIconifiedByDefault(false);实现。

属性名称 相关方法 描述
android:iconifiedByDefault setIconifiedByDefault(boolean) 设置搜索图标是否显示在搜索框内
android:imeOptions setImeOptions(int) 设置输入法搜索选项字段,默认是搜索,可以是:下一页、发送、完成等
android:inputType setInputType(int) 设置输入类型
android:maxWidth setMaxWidth(int) 设置最大宽度
android:queryHint setQueryHint(CharSequence) 设置查询提示字符串

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;//这里return false不需要修改,false的作用是当你输入要搜索的文字点击搜索按钮后,手机键盘会自动消失,你把false改成true,键盘不会消失。
                  }
       
                  // 当搜索内容改变时触发该方法
                  @Override
                  public boolean onQueryTextChange(String newText) {//此方法的作用是对搜索框里的文字实时监听。

    •                 if (!TextUtils.isEmpty(newText)){
                          mListView.setFilterText(newText);
                      }else{
                          mListView.clearTextFilter();
                      }
                      return false;
                  }
              });
       
          }
      }

特别强调一下,上述代码中listview的作用就是当你输入一个字或几个字时,listview会显示你可能要搜索的文字。上述代码我试了一下,如果你需要提示功能,listview要自己改一下,或者你复制上面代码预览一下效果,看如何修改。

SearchView其他属性设置如下:

如果你自己写了个搜索按钮,需要获取搜索框中内容,可以使用如下方法:

String query = searchView.getQuery().toString();

参考链接:Android 搜索框:SearchView 的属性和用法详解 - 灰信网(软件开发博客聚合)

你可能感兴趣的:(移动,Android,android)