我从头到尾都在此搜索过,但是没有找到有用的信息或问题。
如何在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中。
而且,这是一个搜索小部件,而不是搜索对话框。我没有在任何操作栏中使用它。
注意-我对此进行了全面的搜索和研究,但没有发现有用的东西。
很遗憾,您可以这样做。我建议您制作一个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>
[如果您在操作栏中使用此功能,而不是简单地将其添加为菜单项
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"/>