11

数字のみを入力する必要がある1つのEditTextを使用したアクティビティがあります。

これで、EditTextの入力タイプを数字のみに定義し、ユーザーが使用できるきれいなキーパッドを作成しましたが、ユーザーがクリックしたときにソフトキーボードがポップアップしないようにする必要もあります。 EditText。

マニフェストにキーボードを隠してみました

android:windowSoftInputMode="stateAlwaysHidden"

特定のアクティビティのマニフェストにありますが、ユーザーがEditTextをクリックするとすぐにキーボードが再び表示されるため、これは機能しません。

私は同じようにプログラムで同じことをやってみました

activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

しかし、それも機能しません。ユーザーがEditTextをクリックすると、キーボードが表示されます。

唯一機能したのは、次のようにEditTextのInputTypeをnullに設定することでした。

EditText.setInputType(InputType.TYPE_NULL);

ただし、キーボードをデバイスに接続しているユーザーがEditTextフィールドに文字やその他の記号を入力できるようにするため、これは使用できません。一方、フィールドにデータを入力するには、キーパッドのみを使用する必要があります。

また、現在Android 2.1でアプリをテストしていますが、すべてのバージョンでソリューションを機能させたいと考えています。どんな助けでもいただければ幸いです。前もって感謝します。

4

6 に答える 6

6

EditTextを拡張して、そこからソフトキーボードへのアクセスを処理できるかもしれないと思ったところ、この質問に出くわしました。これは、私の問題に対する非常に洗練された解決策です。

手順に従っただけで、これでソフト​​キーボードが完全に処理されました。この問題に遭遇した他の人に役立つことを願っています。

于 2011-05-02T20:57:55.593 に答える
6

ソフトキーボードを無効にする必要があるEdittextで、その編集テキストのxmlに属性を追加します。

<EditText android:id=".."
          ..
          android:focusable="false" />

ソフトキーボードの実行を停止します。

于 2012-11-22T17:07:15.433 に答える
4

android:windowSoftInputMode="stateHidden" マニフェストファイルのアクティビティでを使用し ます。これは機能します。テキストを入力する意思がない場合を除いて、EditTextにandroid:focusable="false"を使用しないでください。入力を行う場合は、レイアウトファイルのエディットテキストのプロパティを削除します。

于 2013-02-14T10:30:34.210 に答える
1

あなたはこれを試すことができます。それは私のために働いています:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
                     WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
于 2018-08-09T06:03:00.730 に答える
0

たとえばViewGroupを使用している場合は、次の方法を使用してソフトキーボードをブロックできます。

view.setDescendantFocusability(view.FOCUS_BLOCK_DESCENDANTS);

これのおかげで、ビューはその子孫の前にフォーカスを取得します。

于 2013-05-27T18:48:11.130 に答える
-1

このコードを使用できます:

<EditText
    .
    .
    android:enabled="false"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:inputType="numberPassword" />
于 2017-12-13T12:25:28.833 に答える