Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SearchView setOnClickListener不工作_Android_Click_Onclicklistener_Searchview - Fatal编程技术网

Android SearchView setOnClickListener不工作

Android SearchView setOnClickListener不工作,android,click,onclicklistener,searchview,Android,Click,Onclicklistener,Searchview,有人知道为什么这不起作用吗 我的SearchView位于ActionBar中,并始终显示。我想知道用户何时按下searchview。。。而不是当它扩展或获得焦点时 此代码位于OnCreateOptions菜单中 SearchView = _searchView; SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); _searchView = (SearchView) me

有人知道为什么这不起作用吗

我的
SearchView
位于
ActionBar
中,并始终显示。我想知道用户何时按下
searchview
。。。而不是当它扩展或获得焦点时

此代码位于OnCreateOptions菜单中

SearchView = _searchView;

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
_searchView = (SearchView) menu.findItem(R.id.menu_finder_text_search).getActionView();
_searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
_searchView.setIconifiedByDefault(false); // Do not iconify the widget, we want to keep it open!
_searchView.setFocusable(false);
_searchView.setClickable(true);

_searchView.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
        //DO SOMETHING!
    }
});

有人吗?

在TouchListener上使用界面


这需要多一点实现代码,但可以更好地控制UI。此解决方案假定用户将使用触摸屏与视图交互。

好的,它不会回答问题,只是避免了问题。 我使用这个链接创建了一个侦听器,用于显示键盘的时间。这给了我一个合适的时机


SearchView继承自LinearLayout,因此我们可以为每个子项设置ClickListener,如下所示:

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);
        }
    }
}
public static void setSearchViewOnClickListener(视图v,OnClickListener listener){
if(视图组的v实例){
视图组组=(视图组)v;
int count=group.getChildCount();
for(int i=0;i
发件人:

尝试以下操作:

1) 绑定视图

@BindView(R.id.search) SearchView search;
2) 在onCreate()中,编写以下代码

search.setIconifiedByDefault(false);
        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                search.setIconified(false);
            }
        });
3) 您的SearchView应该具有以下属性

          <SearchView
                android:id="@+id/search"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_centerVertical="true"
                android:background="@drawable/rounded_corners_box"
                android:drawableLeft="@android:drawable/ic_menu_search"
                android:imeOptions="actionSearch"
                android:inputType="text"
                android:maxLines="1"
                android:queryHint="Search your item.."
                android:textColor="@android:color/black"
                android:textColorHint="@color/colorPrimary"
                app:defaultQueryHint="Select locality"/>

注意:

android:background=“@drawable/rounded_corners_box”--您的自定义边框xml文件。
android:drawableLeft=“@android:drawable/ic_menu_search”--从drawable文件中搜索图标。

将SearchView按钮绑定到自定义图像视图,并在其中添加onClickListener

ImageView searchButton = this.searchView.findViewById(android.support.v7.appcompat.R.id.search_button);    
searchButton.setOnClickListener(v -> {

    // Your code here

    //This is needed since you are overwriting the default click behaviour
    searchView.setIconified(false);
}); 

最近一直在解决这个问题,并找到了一个简单的解决方案

searchView.setOnQueryTextFocusChangeListener(object : View.OnFocusChangeListener{
        override fun onFocusChange(p0: View?, p1: Boolean) {
            // Enter your code here
        }
    })

当您点击搜索字段并显示软键盘时,将调用此方法。

这是我最初的想法,但当用户触摸searchview\u searchview.setOnTouchListener(new OnTouchListener(){@Override public boolean onTouch(视图v,MotionEvent事件)时,此方法仍然没有响应{return false;}}});哦,是这样的。它可能是一个捕捉触摸事件的嵌套视图吗?它看起来像是搜索视图吞并了所有触摸/点击事件。您能添加一些文本来澄清您在提到的代码片段中所做的更改吗?
searchView.setOnQueryTextFocusChangeListener(object : View.OnFocusChangeListener{
        override fun onFocusChange(p0: View?, p1: Boolean) {
            // Enter your code here
        }
    })