需要使用正确的searchView Listener方法来放置我的代码以更改我的擦除类型搜索结果(圆形X)按钮,以成为一个关闭searchView全白(X)按钮。
这是我在操作栏中创建searchView的代码:
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
MenuItem item =menu.findItem(menuSearch);
final SearchView searchView = (SearchView) item.getActionView();
在点击搜索图标的第一张图片中,弹出以下内容并输入我的代码:
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView searchClose = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
searchClose.setImageResource(R.drawable.ic_close_black_24dp);
}
});
因此,您可以单击上面的(X)并关闭searchView。或者你可以开始在键盘上打字进行搜索并得到以下信息:现在注意(X)变为(圆形X),这意味着删除你在键盘上输入的内容。
以上代码:
@Override
public boolean onQueryTextChange(String newText) {
ImageView searchCancel = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
searchCancel.setImageResource(R.drawable.ic_cancel_black_24dp);
return false;
}
});
现在,如果我再次点击(圆形X),我需要它回到原始白色(X)才能完全关闭searchView。所以我需要再次使用R.drawable.ic_close_black_24dp的第一个代码。
它不适用于以下方法:
searchView.setOnQueryTextListener
searchView.setOnCloseListener
我知道正确的代码,我只是错过了正确的searchView Listener方法。当点击(圆形X)时,我使用哪种侦听器方法将其(圆形X)转回白色(X)。
(我希望我能彻底解释,如果没有,我希望我的searchView能像Snapchat一样工作,你会看到它使用2个不同的X,一个删除用户输入的内容,一个完全关闭searchView。
答案 0 :(得分:0)
onQueryTextChange()
。从本质上讲,你想要显示一种类型的“X”是长度是零长度,否则,另一种类型。像这样:
@Override
public boolean onQueryTextChange(String newText) {
ImageView searchCancel =
searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
searchCancel.setImageResource(
(newText.length() > 0)
? R.drawable.ic_cancel_black_24dp:
: R.drawable.[the other type of "X"]);
return false;
}