很早玩搜索都是自定義一個搜索框的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ǔ)充