SearchView 开发遇到的问题

问题一

现象

mSearchView 调用clearfocus函数,setOnQueryTextFocusChangeListener监听未响应

原因

当我们调用setOnQueryTextFocusChangeListener函数的时候,最终是给mOnQueryTextFocusChangeListener变量。
而这个变量是在什么时候使用的呢?
我们查看源码发现:

  // 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();

你可能感兴趣的:(SearchView 开发遇到的问题)