2013-02-26 80 views
1

任何人都可以看到這是爲什麼不工作..搜索查看setOnClickListener不工作

我搜索查看是在動作條,並始終顯示。我想知道用戶何時按下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! 
       } 
      }); 

有人嗎?

回答

3

搜索查看從LinearLayout中繼承的,所以我們可以setOnClickListener爲每個孩子,就像這樣:

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/

+0

似乎不適合我 – Nikaoto 2017-10-24 15:52:01

0

使用界面OnTouchListenerhttp://developer.android.com/reference/android/view/View.OnTouchListener.html

這需要更多一點點的實現代碼,但給在UI出色的控制。該解決方案假定用戶將使用觸摸屏與視圖交互。

+0

這就是我本來以爲,還是當用戶觸摸搜索查看\t \t _searchView.setOnTouchListener(新OnTouchListener(){ \t \t \t \t \t \t \t \t @覆蓋 \t \t \t \t公衆對這一不響應布爾onTouch(視圖v,MotionEvent事件){ \t \t \t \t \t返回false; \t \t \t \t} \t \t \t}); – 2013-02-26 15:06:01

+0

哦,好的。它可能是嵌套視圖抓取觸摸事件? – brainmurphy1 2013-02-26 15:11:57

+0

它看起來像搜索視圖吞下所有觸摸/點擊事件。 – 2013-02-26 15:21:45

1

好的,它不回答它只是避免它的問題。 我已經使用這個鏈接爲鍵盤顯示時創建一個監聽器。這給了我一個適合我的時間。

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

+0

不是很好,但工程。感謝您的鏈接。 – 2013-03-05 11:41:49

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 
       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:背景= 「@繪製/ rounded_corners_box」 - 自定義邊框XML文件。 android:drawableLeft =「@ android:drawable/ic_menu_search」 - 從可繪製文件搜索圖標。