如何将SearchView的输入类型设置为数字

Ale*_*ood 12 android android-view android-actionbar

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

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

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>
Run Code Online (Sandbox Code Playgroud)

lok*_*oko 12

在API 14中引入了searchView上的setInputType.要将其设置为数字,请尝试:

searchView.setInputType(InputType.TYPE_CLASS_NUMBER);
Run Code Online (Sandbox Code Playgroud)


Chr*_*lay 7

如果您在兼容性库片段中设置它,则需要使用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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)