我把我的SearchView打开了
android:iconifiedByDefault="false“
我想跟踪用户第一次打开搜索栏(键盘弹出的那一刻)。
这样做是行不通的:
searchView = findViewById(R.id.search_bar);
searchView.setOnSearchClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.i("###", "Clicked");
    }
});上面的代码只在搜索栏被图标化时才能工作。我不想要一个图标化的搜索栏,我的搜索栏应该像Instagram搜索栏一样,有一个queryHint“搜索这里.”
以下是我的XML:
<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:
    searchView = findViewById(R.id.search_bar);
    searchView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.i("###", "Clicked ");
            return true;
        }
    });但是它也是一样的,只有在点击搜索图标时才能工作。
发布于 2021-04-12 13:34:24
在这里尝试setOnTouchListener --我提供的是kotlin代码--您也可以在java中实现类似的。
  searchView.setOnTouchListener(object : View.OnTouchListener{
            override fun onTouch(v : View?, event : MotionEvent?) : Boolean {
                Log.i("tag","test")
                return  true
            }
        })发布于 2021-06-18 10:34:57
我建议尝试setOnFocusChangeListener并在您的searchView中将可聚焦属性设置为true。
代码(它是Kotlin -我没有java文件rn,但您可以轻松地自动转换它。我尽可能地保持它像Java一样):
searchView?.setOnFocusChangeListener(object: View.OnFocusChangeListener {
    override fun onFocusChange(v: View?, hasFocus: Boolean) {
        // do fancy stuff
    }
})和xml:
<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因此存在。当您想要在文本中注册更改时,也可以使用它,而不仅仅是打开键盘。
https://stackoverflow.com/questions/67058768
复制相似问题