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();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2018/7/29 周日 晴朗 《往后余生》循环播放N遍,时针指向凌晨,辗转反侧,依旧不成眠。 言语从来不能讲...
    一颗柚心阅读 214评论 0 3
  • 自现象级英语 BE HOME TO 1. 英英释义:be the place where something ...
    自观问渠阅读 2,380评论 0 1
  • 不知不觉间,麦子的训练营接近尾声,直到上完最后一堂课,不对,准确地说,是11月7日晚小唯的分享,从而引发的对...
    小象妈妈2003阅读 273评论 0 0
  • 去接天天,早了一些,教室的门还禁闭着。我坐在前台旁边,看书架上有哪些书。 身后的工作人员,在跟一位妈妈协调孩子的上...
    素衣烟霞阅读 315评论 0 1