SearchView 검색 상자 컨트롤의 유연성 활용 (1)

긴 말 말고 코드를 붙여라.
첫째, 레이아웃을 잘 쓰면 ToolBar이고 주제를 NoActionBar로 설정합니다.개인 습관에 익숙해져서 ActionBar를 사용해도 됩니다.
2. menu 파일을 만듭니다.그중에 하나의 item은 검색뷰에 사용자 정의 제출 단추를 제공하기 위해서입니다.


    
    
    
    

3. Activity 코드.
package com.devin.searchviewdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements
        SearchView.OnQueryTextListener {

    private static final String TAG = "SearchView";
    private SearchView searchView;
    private Toolbar mToolBar;
    private Menu menu;
    //SearchView     ,       android.support.v7.widget.SearchView$SearchAutoComplete
    private SearchView.SearchAutoComplete searchText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mToolBar = (Toolbar) findViewById(R.id.toolbar_top);
        setSupportActionBar(mToolBar);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_option_menu, menu);
        //  menu  ,         
        this.menu = menu;
        MenuItem item = menu.findItem(R.id.main_menu_item_search);//      
        searchView = new SearchView(this);//      
        item.setActionView(searchView);

        //searchView.setIconified(false);//      
        //searchView.setQueryHint("     ");//         
        searchView.setOnQueryTextListener(this);//      
        //                 ,            
        //searchView.setSubmitButtonEnabled(true);//          
        //       
        searchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                Log.i(TAG, "  ");
                return false;
            }
        });
        searchText = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text);
        return true;
    }

    /**
     *     
     *
     * @param query
     * @return
     */
    @Override
    public boolean onQueryTextSubmit(String query) {
        //               
        Log.i(TAG, "submit:" + query);
        return false;
    }

    /**
     *     
     *
     * @param newText
     * @return
     */
    @Override
    public boolean onQueryTextChange(String newText) {
        MenuItem btnItem = menu.findItem(R.id.main_menu_item_btn_search);
        //      ,             ,     
        if (newText.isEmpty()) {
            btnItem.setVisible(false);
        } else {
            btnItem.setVisible(true);
        }
        return true;
    }

    /**
     *        
     *
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.main_menu_item_btn_search:
                //          
                Toast.makeText(MainActivity.this, searchText.getText().toString(), Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
        return true;
    }
}

원본 제출 단추를 사용할 수 있습니다. 오른쪽 방향의 화살표입니다. 확대경을 사용하려면 사용자 정의 화살표를 사용하십시오.텍스트 변화로 표시 여부를 감시합니다.클릭할 때 검색 상자의 텍스트를 가져옵니다.
자동으로 완성된 코드를 연구해야 한다.

좋은 웹페이지 즐겨찾기