Androidでは、デバイスのキーパッドを常にアプリケーションに表示するにはどうすればよいですか? 上部にはアプリケーションがレンダリングするコンテンツが表示され、下部には常にキーパッドが表示されます。
3 に答える
AndroidManifest.xml ファイルのアクティビティに android:windowSoftInputMode="stateAlwaysVisible" を追加します。
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible" />
私のテストアプリでは、アプリケーションの起動時にキーボードが表示されますが、修正されていませんが、戻るボタンを押すと閉じることができます。
キーボードが常に表示されるようにするには、アプリケーションの UI の一部として独自のキーボードを作成する必要がある場合があります。これは、KeyboardView でこれを行う方法を示すチュートリアルです: http://www.fampennings.nl/maarten/android/09keyboard/index.htm
EditText
レイアウトに が必要であり、EditText
基本クラスを拡張する必要があります。メソッドをオーバーライドし、 TrueonKeyPreIme()
を返します。これで、キーボードが常に表示され、Back キーで閉じることができなくなります。
注意:onKeyPreIme()
メソッドが返されるため、true
戻るキーを使用してアプリを終了することはできません。
例:
public class CustomEdit extends EditText {
public CustomEdit(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e("Log", "onKeyPreIme");
return true;
//return super.onKeyPreIme(keyCode, event);
}
}
myEditText
クラスのフィールドで編集した後、ソフトキーボードを表示したままにする方法を見つけましたEditText
。onEditorAction
トリックは、メソッドが返されるようにメソッドをオーバーライドすることですtrue
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
});
または、「完了」キークリック ( )の後にのみonEditorAction
戻る必要があります。true
IME_ACTION_DONE
false
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
Log.i(LOG_TAG, "IME_ACTION_DONE");
return true;
}
return false;
}
});
(メソッドに関するこの回答も参照してください)onEditorAction
マニフェスト ファイルに追加android:windowSoftInputMode="stateAlwaysVisible
すると、アクティビティの開始時にソフト キーボードが表示されるようになりましたが、編集後に [完了] キーがクリックされるたびにソフト キーボードが再び消えるのを防ぐことはできませんでした。