4

なぜこれが機能しないのか誰にもわかります..

MySearchViewは にあり、ActionBar常に表示されます。ユーザーがsearchview... を押したときを知りたいのですが、それが拡大またはフォーカスを得たときではありません。

このコードは onCreateOptionsMenu 内にあります

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!
    }
});

誰?

4

7 に答える 7

8

SearchView は LinearLayout から継承されるため、次のように子ごとに OnClickListener を設定できます。

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/

于 2014-01-22T03:41:55.480 に答える
1

わかりました、それはそれを回避するだけで問題に答えません。このリンクを使用して、キーボードが表示されたときのリスナーを作成しました。これにより、適切なタイミングでイベントを開催できます。

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

于 2013-02-26T17:23:30.637 に答える
1

これを試して:

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" -- ドローアブル ファイルからアイコンを検索します。

于 2016-10-27T08:59:48.253 に答える
0

インターフェイスを使用しますOnTouchListener: http://developer.android.com/reference/android/view/View.OnTouchListener.html

これには少し多くの実装コードが必要ですが、UI をより適切に制御できます。このソリューションは、ユーザーがタッチ スクリーンを使用してビューを操作することを前提としています。

于 2013-02-26T15:01:38.437 に答える