1. 程式人生 > >Android 搜尋框:SearchView 的屬性和用法詳解

Android 搜尋框:SearchView 的屬性和用法詳解

SearchView簡介

SearchView是Android原生的搜尋框控制元件,它提供了一個使用者介面,用於使用者搜尋查詢。
SearchView預設是展示一個search的icon,點選icon展開搜尋框,如果你想讓搜尋框預設就展開,可以通過setIconifiedByDefault(false);實現。

SearchView屬性

屬性名稱 相關方法 描述
android:iconifiedByDefault setIconifiedByDefault(boolean) 設定搜尋圖示是否顯示在搜尋框內
android:imeOptions setImeOptions(int) 設定輸入法搜尋選項欄位,預設是搜尋,可以是:下一頁、傳送、完成等
android:inputType setInputType(int) 設定輸入型別
android:maxWidth setMaxWidth(int) 設定最大寬度
android:queryHint setQueryHint(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;
            }

            // 當搜尋內容改變時觸發該方法
            @Override
            public boolean onQueryTextChange(String newText) {
                if (!TextUtils.isEmpty(newText)){
                    mListView.setFilterText(newText);
                }else{
                    mListView.clearTextFilter();
                }
                return false;
            }
        });

    }
}
  • 效果截圖:

這裡寫圖片描述