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

198 篇文章 1 订阅

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

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

SearchView使用

  • xml中定义SearchView:
  • <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        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">
     
        <SearchView
            android:id="@+id/searchView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:iconifiedByDefault="false"
            android:queryHint="请输入搜索内容" />
     
        <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    </LinearLayout>
  • 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<String>(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其他属性设置如下:

<androidx.appcompat.widget.SearchView
    android:id="@+id/searchview"
    android:layout_width="0dp"
    android:layout_height="35dp"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:background="@drawable/search_style"
    android:inputType="text"
    android:paddingLeft="5dp"
    app:iconifiedByDefault="false"
    app:queryHint="请输入宝贝名称" />

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

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

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值