首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SearchView onSearchClickListener不工作

SearchView onSearchClickListener不工作
EN

Stack Overflow用户
提问于 2021-04-12 12:56:01
回答 2查看 273关注 0票数 0

我把我的SearchView打开了

android:iconifiedByDefault="false“

我想跟踪用户第一次打开搜索栏(键盘弹出的那一刻)。

这样做是行不通的:

代码语言:javascript
运行
复制
searchView = findViewById(R.id.search_bar);
searchView.setOnSearchClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.i("###", "Clicked");
    }
});

上面的代码只在搜索栏被图标化时才能工作。我不想要一个图标化的搜索栏,我的搜索栏应该像Instagram搜索栏一样,有一个queryHint“搜索这里.”

以下是我的XML:

代码语言:javascript
运行
复制
<androidx.appcompat.widget.SearchView
    android:id="@+id/search_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:iconifiedByDefault="false"
    app:defaultQueryHint="Search here"/>

我做错了什么?

编辑

我还试图实现onTouchListener:

代码语言:javascript
运行
复制
    searchView = findViewById(R.id.search_bar);
    searchView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.i("###", "Clicked ");
            return true;
        }
    });

但是它也是一样的,只有在点击搜索图标时才能工作。

EN

回答 2

Stack Overflow用户

发布于 2021-04-12 13:34:24

在这里尝试setOnTouchListener --我提供的是kotlin代码--您也可以在java中实现类似的。

代码语言:javascript
运行
复制
  searchView.setOnTouchListener(object : View.OnTouchListener{
            override fun onTouch(v : View?, event : MotionEvent?) : Boolean {
                Log.i("tag","test")
                return  true
            }
        })
票数 0
EN

Stack Overflow用户

发布于 2021-06-18 10:34:57

我建议尝试setOnFocusChangeListener并在您的searchView中将可聚焦属性设置为true

代码(它是Kotlin -我没有java文件rn,但您可以轻松地自动转换它。我尽可能地保持它像Java一样):

代码语言:javascript
运行
复制
searchView?.setOnFocusChangeListener(object: View.OnFocusChangeListener {
    override fun onFocusChange(v: View?, hasFocus: Boolean) {
        // do fancy stuff
    }
})

和xml:

代码语言:javascript
运行
复制
<androidx.appcompat.widget.SearchView
    android:id="@+id/search_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:iconifiedByDefault="false"
    android:focusable="true"
    app:defaultQueryHint="Search here"/>

另外,请注意一点:尽管它与这个问题无关,但是很多人可能会在这个问题上绊倒,但搞不懂为什么在开始搜索时没有执行onSearchClick:函数setOnQueryTextListener因此存在。当您想要在文本中注册更改时,也可以使用它,而不仅仅是打开键盘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67058768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档