問題一
現(xiàn)象
mSearchView 調用clearfocus函數,setOnQueryTextFocusChangeListener監(jiān)聽未響應
原因
當我們調用setOnQueryTextFocusChangeListener
函數的時候赛惩,最終是給mOnQueryTextFocusChangeListener
變量硝烂。
而這個變量是在什么時候使用的呢呈驶?
我們查看源碼發(fā)現(xiàn):
// Inform any listener of focus changes
mSearchSrcTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (mOnQueryTextFocusChangeListener != null) {
mOnQueryTextFocusChangeListener.onFocusChange(SearchView.this, hasFocus);
}
}
});
mOnQueryTextFocusChangeListener
是給mSearchSrcTextView
使用的惕稻,因此我們需要mSearchSrcTextView 的clearFocus,而不是mSearchView的clearFocus惶桐。
解決辦法
知道原因后狐血,我們只要獲取mSearchView中mSearchSrcTextView就行淀歇。
int id = mSearchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
mSearchSrcTextView = (EditText) mSearchView.findViewById(id);
mSearchSrcTextView.clearFocus();