您的位置:首页 > 其它

support design SearchView onCloseListener 不调用解决方案

2016-04-05 18:27 316 查看
在开始之前 首先要说下我调用searchView的配置;

我是把searchView放在了toolbar 上,

menu文件如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/search"
android:icon="@mipmap/ic_search"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="collapseActionView|always" />

</menu>




seachView点击状态



点击searchView图标展开后的状态;注意这是带有CollapseIcon 因为我在menu里的

app:showAsAction属性里加了 collapseActionView

问题就在这里了,如果不加这个属性,那么onCloseListener就能调用;

为什么呢,通过查看searview源码发现onCloseListener绑定是searchView上的一个控件的listener,并不是监听

它是否关闭;绑定的就是那个小叉叉控件;而当我设置了collapseActionView后这个小叉叉的点击事件被改写为

清除searchView的字符

到这里就很好解释了为什么没有调用onCloseListener了

那么要怎么监听searchView是否关闭呢,

我的做法是:

search.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {

@Override

public void onFocusChange(View v, boolean hasFocus) {

Toast.makeText(getApplicationContext(), “hasFocus: ” + hasFocus, Toast.LENGTH_SHORT).show();

}
});


用这个方法监听searchView是否关闭打开

到此很清楚了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: