首页 > 解决方案 > 展开的 SearchView 上的 onClickListener

问题描述

我只是想检测 SearchView 是否被点击。像 setOnClickListener 和 setOnSearchClickListener 这样的普通监听器只检测到 SearchView 左侧的 Search 图标上的点击。但是无论用户在何处单击工具栏,我都想检测单击。

在此处输入图像描述

我尝试了以下方法:

setOnSearchClickListener:

        searchView = findViewById(R.id.search_bar);
        searchView.setOnSearchClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i("###", "clicked");
            }
        });

setOnClickListener:

searchView = findViewById(R.id.search_bar);
searchView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.i("###", "clicked");
    }
});

setOnTouchListener:

searchView = findViewById(R.id.search_bar);
searchView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Log.i("###", "Clicked");
        return false;
    }
});

以上都不起作用。我知道我可以简单地将 setOnQueryTextListener 与 onQueryTextChange 一起使用,但这在我的特定情况下不起作用,我想在用户甚至开始输入 SearchView 之前检测点击。而且我还想扩展工具栏(iconified = false)。

这是我的 SearchView XML:

<androidx.appcompat.widget.SearchView
    android:id="@+id/search_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:iconifiedByDefault="false"
    app:defaultQueryHint="Search here"  />

网上好像没有这个问题的答案。

标签: javaandroidonclicklistenersearchview

解决方案


推荐阅读