在应用程序上设置OnClick侦听器:Android搜索图标

问题描述 投票:0回答:1

我从头到尾都在此搜索过,但是没有找到有用的信息或问题。

如何在SearchView中的搜索图标上设置onClickLister。?

我将默认搜索图标更改为自己的可绘制对象。

<androidx.appcompat.widget.SearchView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/action_search"
    android:layout_marginTop="20dp"
    app:queryHint="Search..."
    app:iconifiedByDefault="false"
    app:searchIcon="@drawable/back_icon2"
    android:theme="@style/WhiteCursorSearchView"
    android:layout_alignParentTop="true"
    />

app:searchIcon =“ @ drawable / back_icon2”

现在,我想将onClick侦听器设置为这个新的可绘制对象,它位于整个searchView的searchView NOT中。

而且,这是一个搜索小部件,而不是搜索对话框。我没有在任何操作栏中使用它。

注意-我对此进行了全面的搜索和研究,但没有发现有用的东西。

java android searchview
1个回答
0
投票

很遗憾,您可以这样做。我建议您制作一个edittext,最后放一个按钮并设置图标。现在,您可以手动处理此问题。我认为这将是完美的。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="fill_parent">
<EditText android:text="@+id/EditText01" 
    android:id="@+id/EditText01"
    android:layout_height="wrap_content" 
    android:layout_weight="1"
    android:layout_width="fill_parent">
</EditText>

<ImageButton
 android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
  android:id="@+id/imageButton"
  android:layout_centerVertical="true"
  android:layout_centerHorizontal="true"
  android:src="@drawable/abc"/>
</LinearLayout>

0
投票

[如果您在操作栏中使用此功能,而不是简单地将其添加为菜单项

MenuItem item = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);

要查询数据

 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                mAdapter.getFilter().filter(s);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                mAdapter.getFilter().filter(s);
                return false;
            }
        });

这里是完整代码

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_nav, menu);
        MenuItem item = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                mAdapter.getFilter().filter(s);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                mAdapter.getFilter().filter(s);
                return false;
            }
        });


        return super.onCreateOptionsMenu(menu);
    }

将此添加到menu.xml文件中

<item
        android:id="@+id/action_search"
        android:title="Search"
        app:actionViewClass="androidx.appcompat.widget.SearchView"
        android:icon="@drawable/search"
        app:showAsAction="always|collapseActionView"/>
© www.soinside.com 2019 - 2024. All rights reserved.