需要为按钮确定正确的searchVIew Listener方法以准备关闭searchView

时间:2017-10-30 19:04:32

标签: android android-actionbar listener searchview oncreate

需要使用正确的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);

        }
    });

enter image description here

因此,您可以单击上面的(X)并关闭searchView。或者你可以开始在键盘上打字进行搜索并得到以下信息:现在注意(X)变为(圆形X),这意味着删除你在键盘上输入的内容。

enter image description here

以上代码:

       @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。

所以我只需要使用正确的Listener方法而不是方法内的代码。

1 个答案:

答案 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;
}