搜尋框(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元件顯示自動完成列表。
執行結果如下:
&n