Androidでは、デバイスのキーパッドをアプリケーションで常に表示する方法を教えてください。上部にはアプリケーションがレンダリングしたいコンテンツが表示され、下部には常にキーパッドが表示されます。
Android:windowSoftInputMode = "stateAlwaysVisible"をAndroidManifest.xmlファイルのアクティビティに追加します。
<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
基本クラスを拡張する必要があります。次にonKeyPreIme()
メソッドをオーバーライドし、 本当。これで、キーボードは常に表示され、戻るキーで閉じることができなくなります。
注意: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
を追加すると、アクティビティの開始時にソフトキーボードが表示されるようになりますが、編集後に[完了]キーがクリックされるたびにソフトキーボードが非表示になるのを防ぐことはできませんでした。