問題一
現(xiàn)象
mSearchView 調(diào)用clearfocus函數(shù),setOnQueryTextFocusChangeListener監(jiān)聽未響應(yīng)
原因
當(dāng)我們調(diào)用setOnQueryTextFocusChangeListener函數(shù)的時(shí)候,最終是給mOnQueryTextFocusChangeListener變量。
而這個(gè)變量是在什么時(shí)候使用的呢?
我們查看源碼發(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();