1. 程式人生 > >Android-在動作欄中增加“查詢”檢視

Android-在動作欄中增加“查詢”檢視

執行APP程式,由於當前模擬器螢幕比較小,部分動作項沒有顯示,單擊鍵盤上的”MENU”按鈕,會出現選單欄。單擊表示查詢的放大鏡圖示,輸入查詢關鍵詞,按回車鍵會顯示字樣:查詢:…

Action View(動作檢視)是出現在動作欄中,代替動作項按鈕的小工具。可以在工作欄中增加”查詢”動作項。增加動作檢視時,只需要設定項的actionViewClass屬性即可。actionViewClass屬性用來為動作欄指定一個檢視類。本例中,為動作項的actionViewClass屬性指定了系統自帶的android.widget.SearchView控制元件:android:actionViewClass=”android.widget.SearchView”

實現過程:
1.修改/res/layout/包中的main_activity.xml檔案,設定背景圖片

<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"
    android:background
="@drawable/jay1" >
</LinearLayout>

2.在/res/menu資料夾中新建actions.xml檔案,增加4個選單項,為第一個選單項設定actionViewClass屬性為”android.widget.SearchView”,其他的不設定。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >
  <item
        android:id="@+id/action_settings"
android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings"/>
</menu>

3.新建ActionViewActivity類,繼承Activity類。在onCreate()方法中應用佈局檔案。在onCreateOptionsMenu()方法中,獲得SearchView,然後處理查詢事件。在onOptionsItemSelected()方法中,處理選單項選擇事件。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater flater=getMenuInflater();
        flater.inflate(R.menu.actions, menu);
        SearchView searchView=(SearchView)menu.findItem(R.id.search_action).getActionView();
        searchView.setOnQueryTextListener(new OnQueryTextListener() {

            @Override
            public boolean onQueryTextSubmit(String query) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, "查詢:"+query, Toast.LENGTH_LONG).show();
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                // TODO Auto-generated method stub
                return true;
            }
        });
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        Toast.makeText(MainActivity.this, "選擇"+item.getTitle(), Toast.LENGTH_SHORT).show();
        return true;
    }
}