如果想点击SearchView进行某个操作,直接用setOnClickListener是不生效的,setOnTouchListener也没有作用。
从源码看:SearchView继承自LinearLayout,里面的部件都是child,所以通过如下代码即可满足需要
public static void setSearchViewOnClickListener(View v, OnClickListener listener) {
if (v instanceof ViewGroup) {
ViewGroup group = (ViewGroup)v;
int count = group.getChildCount();
for (int i = 0; i < count; i++) {
View child = group.getChildAt(i);
if (child instanceof LinearLayout || child instanceof RelativeLayout) {
setSearchViewOnClickListener(child, listener);
}
if (child instanceof TextView) {
TextView text = (TextView)child;
text.setFocusable(false);
}
child.setOnClickListener(listener);
}
}
}
表示设置每个child的setOnClickListener为相应listener,调用或也直接使用ViewUtils.setSearchViewOnClickListener:
setOnClickListener(searchView, new OnClickListener() {
@Override
public void onClick(View v) {
}
});
chanku fung