2012-03-03 21 views
9

पर एक खोज दृश्य का इनपुट प्रकार कैसे सेट करें मेरे पास वर्तमान में SearchView है जो मेरे ऐप के ActionBar (जिसमें से मैं एक एक्सएमएल लेआउट फ़ाइल से पॉप्युलेट कर रहा हूं) और मैं इसे केवल संख्यात्मक इनपुट लेने के लिए मजबूर करने की कोशिश कर रहा हूं। मैंने XML में android:inputType="number" विशेषता सेट करने का प्रयास किया है, लेकिन इसका कोई प्रभाव नहीं है।न्यूमेरिक

क्या कोई इस समस्या का स्रोत जानता है?

एक्सएमएल मेनू संसाधन:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/search" 
     android:title="@string/menu_search" 
     android:actionViewClass="android.widget.SearchView" 
     android:icon="@drawable/ic_menu_search_holo_light" 
     android:inputType="number" />  
</menu> 
+0

देखें इस [कड़ी] (http://developer.android.com/reference/android/widget/SearchView.html) –

+2

सलाह के लिए धन्यवाद, लेकिन मुझे स्टैक ओवरफ्लो पर प्रश्न पूछने से पहले एंड्रॉइड प्रलेखन से परामर्श करना है: पी –

+0

आगे, दस्तावेज़ीकरण से पता चलता है कि इस विधि के साथ कोई समस्या नहीं होनी चाहिए। –

उत्तर

6

आप एक संगतता पुस्तकालय टुकड़ा में यह कर रहे हैं तो आप SearchViewCompat.setInputType(View searchView, int inputType) उपयोग करने की आवश्यकता android.support.v7.widget आप का उपयोग कर सकते हैं:

searchView.setInputType(InputType.TYPE_CLASS_NUMBER); 
+1

'SearchViewCompat.setInputType() 'बहिष्कृत है। यह बदला गया है कि आप सीधे इनपुट टाइप तक पहुंच सकते हैं। कोटलिन 'searchView.setInputType = InputType.TYPE_CLASS_NUMBER' –

2

यह ठीक एक जवाब नहीं है, लेकिन यह ध्यान रखें कि इनपुट प्रकार फिल्टर की उपयोगिता IME का उपयोग कर रहे पर निर्भर हो सकता है; कुछ कीबोर्ड आसानी से इन इनपुट प्रकारों का पालन नहीं करते हैं ... मैंने मुश्किल तरीका सीखा। :(

इस बात को ध्यान में रखते हुए, क्या आपने यह देखने के लिए अन्य इनपुट प्रकारों का उपयोग करने की कोशिश की है कि अगर वे छड़ी करेंगे, तो यह संभवतः एक आईएमई मुद्दा है। अगर वे नहीं करते हैं, तो संभवतः यह एक समस्या है एक SearchView कास्टिंग

आप कोशिश कर सकते हैं, onCreateOptionsMenu में, कि मेनू आइटम की आईडी के आधार पर एक देखने कर रही है,: जिसमें आप एक जवाब में, इनपुट प्रकार लागू करने के लिए कोशिश कर रहे हैं

अब एक शॉट के लिए। , और इनपुट प्रकार को कोड में सेट करना:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater = getMenuInflater(); 
    menuInflater.inflate(R.menu.default_menu, menu); 

    if (MyApplication.SUPPORTS_HONEYCOMB) { // quick check for API level 
     // If we have the honeycomb API, set up the search view 
     MenuItem searchItem = menu.findItem(R.id.search); 

     SearchView search = (SearchView) searchItem.getActionView(); 

     // your code here. something like: 
     search.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL); 

     // you also likely want to set up your search listener here. 

    } 

    // I'm using ActionBarCompat, in which case 
    // calling super after populating the menu is necessary here to ensure that the 
    // action bar helpers have a chance to handle this event. 
    return super.onCreateOptionsMenu(menu); 
} 
+0

अरे जॉन, मदद के लिए धन्यवाद। मैंने कुछ अन्य लोगों की कोशिश की है (यानी 'एंड्रॉइड: इनपुट टाइप = "फोन" '), लेकिन इसका कोई प्रभाव नहीं पड़ा। इसके अलावा, ऐसा लगता है कि [setInputType] (http://developer.android.com/reference/android/widget/SearchView.html#setInputType (int)) को एपीआई 14 में पेश किया गया था, जिसे मैंने अभी तक समर्थन देना शुरू नहीं किया है। जीआरआरआर –

+0

स्पष्ट समाधान केवल कस्टम 'एडिटटेक्स्ट' बनाना होगा, लेकिन इस w/o अनुकूलन को करने का एक तरीका होना चाहिए ... –

+0

यह मेरे लिए होता है कि यदि जावा कोड खोज दृश्य पर इनपुट प्रकार का समर्थन करता है API14 तक अस्तित्व में नहीं है कि यह उस ऑब्जेक्ट पर इनपुट टाइप टाइप एक्सएमएल विशेषता के बारे में भी सच है। शायद SearchView में inputType विशेषता के साथ API14 के लिए अपना ऐप बनाएं, और देखें कि यह प्रभावी होता है या नहीं? यह शायद इंगित करेगा कि यह सही है या नहीं। –

9

एक खोजकर्ता पर setInputType hView एपीआई 14. में पेश किया गया था संख्या कोशिश करने के लिए यह सेट करने के लिए:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.searchable, menu); 
    MenuItem searchMenuItem = menu.findItem(R.id.action_search); 
    if (searchMenuItem != null) { 
     SearchView searchView = (SearchView) searchMenuItem.getActionView(); 
     if (searchView != null) { 
      SearchViewCompat.setInputType(searchView, InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS); 
     } 
    } 
} 
+1

यह AppCompat-v7 android.support.v7.widget.SearchView के साथ भी काम करता है। – bk138

+0

searchView.setInputType (InputType.TYPE_CLASS_NUMBER); –

1

से SearchView का उपयोग करते समय:

searchView.setInputType(InputType.TYPE_CLASS_NUMBER); 
संबंधित मुद्दे