標籤:android style blog http java color
SearchView顧名思義就是一個搜尋視圖,和之前講解的自動匹配的輸入框類似。只不過他有自己特有的監聽器,並且可以即時得到使用者輸入的結果。對於SearchView這個控制項,我強烈建議將其放在ActionBar上面,突出搜尋這個功能。但這裡可能會涉及到Actionbar的知識,所以這裡先給大家展示一下這個控制項是幹什麼用的。
布局檔案
<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:orientation="vertical" > <requestFocus /> <SearchView android:id="@+id/searchView_id" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ListView android:id="@+id/listView_id" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > </ListView> </LinearLayout>
MainActivity.java
package com.kale.searchview;import android.app.Activity;import android.os.Bundle;import android.widget.SearchView;import android.widget.SearchView.OnQueryTextListener;import android.text.TextUtils;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends Activity implements OnQueryTextListener{ private SearchView sView; private ListView lView; //自動完成的列表 private final String[] mStrings = {"aaaa","bbbb","cccc"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewInit(); lView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,mStrings)); lView.setTextFilterEnabled(true); //設定該searchView預設是否自動縮小為表徵圖 sView.setIconified(false); //為該設searchView組件設定事件監聽器 sView.setOnQueryTextListener(this); //設定該組件顯示搜尋按鈕 sView.setSubmitButtonEnabled(true); //設定該組件預設顯示的提示文本 sView.setQueryHint("尋找"); } // 使用者輸入字元時激發的方法 @Override public boolean onQueryTextChange(String newText) { // TODO 自動產生的方法存根 if(TextUtils.isEmpty(newText)) { //清除listview的過濾 lView.clearTextFilter(); } else { //用使用者輸入的內容對listview的清單項目進行過濾 lView.setFilterText(newText); } return true; } //使用者單擊搜尋按鈕時激發的方法 @Override public boolean onQueryTextSubmit(String qurery) { //這裡僅僅是類比,實際中應該在該方法中進行查詢,然後將結果得到 Toast.makeText(MainActivity.this, "你選擇的是:"+qurery, 0).show(); return false; } private void viewInit() { sView = (SearchView)findViewById(R.id.searchView_id); lView = (ListView)findViewById(R.id.listView_id); }}