2013-02-13 31 views
5

onclick मैं SearchView जो इस तरह दिखता है:एंड्रॉयड SearchView

private void setupSearchView() { 
    mSearchView = (SearchView) getActivity().findViewById(
      R.id.search_view_neue); 
    setSearchViewBackground(); 
    mSearchView.setOnClickListener(this); 
    mSearchView.setOnQueryTextListener(this); 
} 




    public boolean onQueryTextSubmit(String query) { 
    searchcounter = searchcounter + 1; 

    setSearchViewBackground(); 
    ArrayList<WissensdokumenteRecord> documents = settingListContent(new ArrayList<WissensdokumenteRecord>()); 

    setListAdapter(new NeueWissensdokumentItemAdapter(
      inflater.getContext(), R.layout.row_example, documents)); 
    InputMethodManager im = (InputMethodManager) getActivity() 
      .getSystemService(Context.INPUT_METHOD_SERVICE); 
    im.hideSoftInputFromWindow(getActivity().getCurrentFocus() 
      .getWindowToken(), 0); 

    return false; 
} 




<SearchView 
    android:id="@+id/search_view_neue" 
    android:layout_width="match_parent" 
    android:layout_height="60dp" 
    android:layout_marginLeft="40dp" 
    android:layout_marginRight="40dp" 
    android:background="@drawable/border_searchview" 
    android:maxWidth="540dp" 
    android:queryHint="Neue Dokumente suchen" > 
</SearchView> 

तो, खोज को देखने के व्यवहार, है कि कुंजीपटल खोज button.Now मैं कुछ के लिए खोज सकते क्लिक करके खोलता है। क्या कहीं भी सर्चव्यू में क्लिक करके खोज करना संभव है? क्या किसी के पास मेरे लिए एक उदाहरण है?

शुभकामनाएं क्रिस्टीन

+0

अच्छा जवाब http://stackoverflow.com/questions/14602807/android-how-to-detect-click-on-custom-searchview-element –

उत्तर

0

मैं तुम्हें क्यों उस पर OnClickListener स्थापित करने के लिए की जरूरत नहीं दिख रहा। एक खोज दृश्य पर क्लिक करके आप टेक्स्ट कर्सर अपडेट करेंगे। खोज करने के लिए आपके पास एक कीबोर्ड IME कार्रवाई है। यदि उस पर क्लिक करना खोज करेगा तो कर्सर को बदलना असंभव होगा। टेक्स्ट फ़ील्ड में फोकस/अपडेट कर्सर से कुछ और करना आम तौर पर गलत व्यवहार है।

जहां तक ​​मुझे याद है - आपको OnQueryTextListener में कीबोर्ड को छिपाने की आवश्यकता नहीं है। यह स्वचालित रूप से हाइट होना चाहिए। OnQueryTextSubmit में अपनी खोज को संभाल

search with Sherlock ActionBar SearchView setOnKeyListener

7

मैं निम्नलिखित तरीके से ऐसा करने में कामयाब रहे:

सेटअप क्लिक श्रोता पर खोज दृश्य

mSearchView.setOnClickListener(this); 

पकड़ने onClick ईवेंट:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.searchView: 
      mSearchView.onActionViewExpanded(); 
      break; 
    } 
} 

इस तरह से कीबोर्ड और खोज यदि आप खोज बार पर कहीं भी क्लिक करते हैं तो ch सक्रिय होते हैं।

+0

इस प्रतिक्रिया को स्वीकार कर लिया के रूप में चिह्नित किया जा सकता है वहाँ है –

0

मैं एंड्रॉयड docs के अनुसार के रूप में SearchView क्लिक का पता लगाने के setOnSearchClickListener listner उपयोग करने के लिए सुझाव है चाहिए:

setOnSearchClickListener

शून्य setOnSearchClickListener (View.OnClickListener श्रोता)

एक श्रोता सेट को सूचित करने की खोज बटन दबाया जाता है।

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater = getMenuInflater(); 
    menuInflater.inflate(R.menu.orders_menu, menu); 
    MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 

    if (searchView != null) { 
     searchView = (SearchView) searchItem.getActionView(); 
     searchView.setOnSearchClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       //perform your click operation here 
      } 
     }); 
    return true; 
} 
2

यह ठीक हो जाएगा कि आप क्या हासिल करने की कोशिश कर रहे हैं। setIconified(false) सर्च व्यू के इस छोर पर क्रॉस आइकन रखेगा ताकि उपयोगकर्ता अभी भी उसी तरह रद्द कर सके जैसे आवर्धक ग्लास पर क्लिक किया गया हो।

searchView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     searchView.setIconified(false); 
    } 
});