Android SearchView 詳解

很早玩搜索都是自定義一個搜索框的drawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="180dp" />
    <solid android:color="@color/titlebar_bg_color" />
</shape>

圖如下


image.png

然后寫一個 EditText,放個刪除的圖

邏輯寫在editText的輸入監(jiān)聽中

        mAccountEd.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {
                //在這里寫搜索的邏輯
            }
        });

但是后面在項目中發(fā)現(xiàn),這樣請求頻率太高,維護(hù)起來特麻煩,還有個特麻煩的事情就是使用軟鍵盤進(jìn)行刪除輸入字段完畢以后,你還要進(jìn)項無輸入項的判斷,這樣做還是有點惡心,后面想想還是用Android原生的
SearchView來寫;

    <android.support.v7.widget.SearchView
        android:layout_marginTop="@dimen/y20"
        android:id="@+id/search_view"
        app:queryHint="請輸入姓名或身份證號"
        android:layout_width="@dimen/x1000"
        android:layout_height="@dimen/y100"
        android:layout_toLeftOf="@id/rl_search"
        android:layout_toRightOf="@id/rl_leftBtn"
        android:background="@drawable/bg_cursor_gray"
       >

    </android.support.v7.widget.SearchView>

  android:background="@drawable/bg_cursor_gray"
這個是自己畫的搜索框,和上面的搜索框代碼是一樣的

圖如下


image.png

上面的搜索icon是自帶的

代碼中邏輯

        mViewSearch.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                queryString = query;
               軟件盤的搜索按鈕點擊就是在這里走的邏輯
                    //點擊搜索
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                Log.e("sss", newText);
                //輸?shù)脙?nèi)容改變的方法監(jiān)聽
                return false;
            }
        });
image.png

下面有一條默認(rèn)的線

        mViewSearch = (SearchView) findViewById(R.id.search_view);
        mViewSearch.findViewById(R.id.search_plate).setBackground(null);
        mViewSearch.findViewById(R.id.submit_area).setBackground(null);

我們直接通過修改Searchview的源碼就可以修改

還有一種情況就是我們的queryHint不起作用,就是沒有打開軟鍵盤,也沒有提示,當(dāng)我們點擊搜索的icon的時候,提示和軟鍵盤才打開,這個的原因就是在布局中其他的布局設(shè)置了焦點
image.png

沒有顯示hint輸入
mViewSearch.setIconifiedByDefault(false);//直接打開
我們只需要給searchview設(shè)置這個屬性就好

累了,就寫這么多,后面在補(bǔ)充

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容