2012-03-03 25 views
9

私のアプリケーションのには現在SearchViewがあります(そのうちのXMLレイアウトファイルから入力しています)。私はそれを強制的に数値入力にしようとしています。私はandroid:inputType="number"属性をXMLで設定しようとしましたが、効果はありません。SearchViewの入力タイプを数値に設定するには

誰もがこの問題の原因を知っていますか?

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

がアドバイス(http://developer.android.com/reference/android/widget/SearchView.html) –

+2

感謝を、この[リンク]を参照してください、私はStackOverflowに関する質問をする前に、Androidのドキュメントを調べることを知っています:P –

+0

さらに、この方法に問題がないはずであることが書かれているようです。 –

答えて

6

あなたは互換ライブラリフラグメントでそれを設定している場合は、あなたがSearchViewCompat.setInputType(View searchView, int inputType)を使用する必要があります。hViewは数トライにそれを設定するには、API 14で導入されましたandroid.support.v7.widgetあなたが使用することができます。

searchView.setInputType(InputType.TYPE_CLASS_NUMBER); 
+1

'SearchViewCompat.setInputType()'は推奨されていません。 inputTypeに直接アクセスできるように変更されました。 コトリン 'searchView.setInputType = InputType.TYPE_CLASS_NUMBER' –

2

これは正確な答えはありませんが、入力型フィルタの有用性は、あなたが使用しているIMEの偶発ことができることを心に留めておきます。いくつかのキーボードは簡単にこれらの入力の種類に従わない...私はその難しい方法を学んだ。 :(

これを念頭に置いて、他の入力タイプを使用して試したことがありますか?それが固執するかどうかは、IMEの問題である可能性があります。 。あなたが入力タイプを強制しようとしている

を今ここで、答えでショットのために:

あなたはSearchViewにキャスト、そのメニュー項目のIDによって、検索を行って、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

ヘイジョン、助けてくれてありがとう。私はいくつか試してみました(つまり、 'android:inputType =" phone "')、しかしそれらは効果がありませんでした。さらに、[setInputType](http://developer.android.com/reference/android/widget/SearchView.html#setInputType(int))がまだサポートを開始していないAPI 14で導入されたようです。 GRRR –

+0

明白な解決策は、カスタム 'EditText'を作成することですが、カスタマイズを行うための方法が必要です。 –

+0

SearchViewで入力タイプをサポートするjavaコードそのオブジェクトのinputType XML属性にはおそらく同じことがAPI14まで存在しません。 SearchViewのinputType属性を持つAPI14用のアプリを構築し、それが有効かどうかを確認してください。これは、おそらくこれが正確かどうかを示します。 –

9

setInputType on a searc

@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); 
関連する問題