2

次のコードを使用して、アクティビティでソフト入力キーボードをポップアップします


InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.getInputMethodList();

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

アルファベットのキーボードが表示されます。

しかし、テンキーを表示したいと思います。

setInputType()の使用は、EdittextまたはTextViewで使用すると機能することを知っていますが、EditTextなどの入力領域なしでキーボードを表示し、キーボードのキーの押下を聞くだけでよいことに注意してください。

誰かがこれが可能かどうかを確認できますか?可能であれば、どのようにそれを達成できますか?

4

2 に答える 2

2

これは確かに達成可能であり、可能です。

TL; DR:

onCreateInputConnectionテンキーを上書きして要求します。

public class CustomView extends View {

    [your methods here]

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        InputConnection connection =  super.onCreateInputConnection(outAttrs);
        outAttrs.inputType |= InputType.TYPE_CLASS_NUMBER;
        return connection;
    }
}

完全な説明

サブクラス化Viewして、独自のカスタムビューを作成しました。

public class CustomView extends View {
    [your methods here]
}

このカスタムビュー内では、を使用しInputMethodManagerてキーボードを表示しています。このマネージャーは、入力をに委任します。InputConnection次に、入力をに委任しますInputMethod

表示されているキーボードが数字であることを要求するには、オーバーライドonCreateInputConnectionして数字キーパッドを返す必要があります。トラブルに巻き込まれて独自のを実装することも、 (この場合は)BaseInputConnectionによって作成されたものを再利用して、気になるプロパティを設定することもできます()。superViewinputType

于 2015-04-23T18:16:21.167 に答える
-1

「onKeyDown」メソッドを使用してみてください。アプリケーションで電話の「戻る」ハードキーをキャプチャするために使用します。メソッドの例では、リッスンするボタンとして戻るを使用します。

    public boolean onKeyDown(int keyCode, KeyEvent event){
      if((keyCode == KeyEvent.KEY_BACK)){
          back();
      }
         return super.onKeyDown(keyCode,event);
   }

ただし、KeyEvent.KEY_BACKを使用する代わりに、代わりにKeyEvent.KEYCODE_Pを使用してみてください。これがソフトキーボードで機能するかどうかはわかりませんが、一見の価値があります。幸運を

于 2010-10-20T17:19:27.877 に答える