首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SearchView setOnClickListener NOT WORkING

SearchView setOnClickListener NOT WORkING
EN

Stack Overflow用户
提问于 2013-02-26 22:50:57
回答 7查看 7.5K关注 0票数 4

有没有人知道为什么这个不起作用..

我的SearchViewActionBar中,并且始终显示。我想知道当用户按下searchview...当它扩展或获得焦点时就不会了。

此代码位于onCreateOptionsMenu中

代码语言:javascript
复制
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!
    }
});

有没有人?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-01-22 11:41:55

SearchView是从LinearLayout继承而来的,所以我们可以为每个子级执行setOnClickListener,如下所示:

代码语言:javascript
复制
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);
        }
    }
}

来自:http://www.trinea.cn/android/searchview-setonclicklistener-not-working/

票数 8
EN

Stack Overflow用户

发布于 2013-02-27 01:23:31

好吧,它没有回答这个问题,它只是避免了这个问题。我已经使用此链接创建了键盘显示时的侦听器。这为我在合适的时间提供了一个事件。

https://stackoverflow.com/a/7423586/1312937

票数 1
EN

Stack Overflow用户

发布于 2016-10-27 16:59:48

试试这个:

1)绑定视图

代码语言:javascript
复制
@BindView(R.id.search) SearchView search;

2)在onCreate()中,编写以下代码。

代码语言:javascript
复制
search.setIconifiedByDefault(false);
        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                search.setIconified(false);
            }
        });

3)并且您的SearchView应该具有以下属性。

代码语言:javascript
复制
          <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"/>

备注:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15092082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档