如何将SearchView的inputtypes设置为数字

我目前有一个SearchView在我的应用程序的ActionBar (我从XML布局文件填充),我试图强制它只能采取数字input。 我已经尝试在XML中设置android:inputType="number"属性,但它没有效果。

有谁知道这个问题的根源?

XML菜单资源:

 <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> 

Solutions Collecting From Web of "如何将SearchView的inputtypes设置为数字"

如果您将其设置为兼容性库片段,则需要使用SearchViewCompat.setInputType(View searchView, int inputType)

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

searchView中的setInputType在API 14中引入。要将其设置为number,请尝试:

 searchView.setInputType(InputType.TYPE_CLASS_NUMBER); 

这不完全是一个答案,但请记住,inputtypesfilter的用处取决于您使用的IME; 有些键盘不会轻易服从这些inputtypes…我了解到这一点很难。 🙁

考虑到这一点,你是否尝试过使用其他inputtypes来查看它们是否会粘住? 如果他们坚持,这可能是一个IME问题。 如果他们不这样做,这可能是您尝试强制执行inputtypes的一个问题。

现在,为了一个答案的镜头:

您可以在onCreateOptionsMenu中尝试使用该菜单项的ID进行查找,将其转换为SearchView,然后在代码中设置inputtypes:

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

android.support.v7.widget使用SearchView ,您可以使用:

 searchView.setInputType(InputType.TYPE_CLASS_NUMBER);