2013-04-24 8 views
5

के वर्चुअल कीबोर्ड को छिपाने में असमर्थ मेरे पास एक खोज दृश्य है जो डिफॉल्ट खोज क्वेरी के साथ डिफ़ॉल्ट रूप से विस्तारित के रूप में सेट किया गया है लेकिन मुझे वर्चुअल कीबोर्ड नहीं चाहिए। नीचे दिए गए कोड में मैंने कीबोर्ड को छुपाने का प्रयास किया onCreateOptionsMenu लेकिन अभी भी कीबोर्ड दिखाई दे रहा है।SearchView iconfiedbydefault (false)

imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
    MenuItem item = menu.findItem(R.id.menu_search); 
    item.expandActionView(); 
    mSearchView = (SearchView) item.getActionView(); 
    mSearchView.setIconifiedByDefault(false); 
    mSearchView.setQuery(query, true); 
    imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0); 

मैं शेरलॉक खोज दृश्य विजेट का उपयोग कर रहा हूं। वर्चुअल कीबोर्ड को छिपाने के लिए कोई सुझाव। मैं क्या गलत कर रहा हूं?

उत्तर

1

विशेष गतिविधि के लिए मैनिफेस्ट में नीचे दी गई पंक्ति जोड़ें।

android:windowSoftInputMode="adjustPan|stateHidden" 
+0

जो उद्देश्य 'के लिए adjustPan' यहाँ है? अकेले 'राज्य से जुड़े' का उपयोग करके पर्याप्त नहीं होगा? – Prizoff

+0

एडजस्टपैन का उपयोग करके वर्तमान फोकस कीबोर्ड द्वारा कभी भी अस्पष्ट नहीं होता है .. अधिक जानकारी के लिए यहां जाएं .. http://developer.android.com/guide/topics/manifest/activity-element.html – itsrajesh4uguys

3

कोशिश

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
+0

+1। या बस 'एंड्रॉइड डालें: windowSoftInputMode = "stateAlwaysHidden" 'एंड्रॉइड मैनिफेस्ट पर अगर कीबोर्ड को मैन्युअल रूप से छुपाए जाने की आवश्यकता नहीं है। –

4

संपादित करें: मैं शीर्ष पर बेहतर समाधान जोड़ा है, लेकिन यह भी एक संदर्भ के रूप में वर्ष जवाब रखा।

@Override 
     public boolean onQueryTextSubmit(String query) { 

        searchView.clearFocus(); 
      return false; 
     } 

मूल उत्तर: मैंने एक setOnQueryTextListener का उपयोग करके प्रोग्राम किया। जब सर्चव्यू छुपाया जाता है तो कीबोर्ड चला जाता है और फिर जब यह फिर से दिखाई देता है तो कीबोर्ड बैक अप नहीं करता है।

//set query change listener 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){ 
     @Override 
     public boolean onQueryTextChange(String newText) { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public boolean onQueryTextSubmit(String query) { 
      /** 
      * hides and then unhides search tab to make sure keyboard disappears when query is submitted 
      */ 
        searchView.setVisibility(View.INVISIBLE); 
        searchView.setVisibility(View.VISIBLE); 
      return false; 
     } 

    }); 
+2

यह दसियों तरीकों की कोशिश करने के बाद मेरे लिए काम करता है! बहुत बहुत धन्यवाद! – Xieyi

+1

यह उत्तर स्वीकार किया जाना चाहिए – nmxprime

14

Parnit के जवाब से प्रेरित होकर, मैं एक बेहतर तरीका है, जो भी काम करता है और अधिक सुंदर है मिल गया है:

mSearchView.clearFocus(); 
+0

सही – Penzzz

+0

के रूप में चिह्नित किया जाना चाहिए क्या आपको पता है कि कीबोर्ड को फिर से खोलना संभव है? –

0

एंड्रॉयड प्रकट में:

android:windowSoftInputMode="adjustPan|stateHidden" 

वर्ग खुले में और कीबोर्ड बंद करें:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action buttons 
     switch(item.getItemId()) { 
case R.id.search: 
     //TODO Whatever 
      search.clearFocus(); 
     //Open and close the keyboard 
      InputMethodManager imm = (InputMethodManager)MyApplication.getAppContext().getSystemService(
        Context.INPUT_METHOD_SERVICE); 
      imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
      imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
      return true; 
0

सरल समाधान मेरी के लिए अपने काम एक्सएमएल में जोड़ें:

android:focusable="false" 
संबंधित मुद्दे