必要に応じて、ユーザーが電子メール、SMS を送信したり、ゲストに電話したりできるページがあります。問題は、ユーザーがゲストに電子メールを送信するときに、キーボードが隠れないことです。問題を解決する小さな問題がありますが、それを解決するための同様の投稿を見つけるのはまだ難しいようです. また、スクリーンショットを作成してここに配置します。
ご覧のとおり、メールを送信した後もキーボードは隠れません。
必要に応じて、ユーザーが電子メール、SMS を送信したり、ゲストに電話したりできるページがあります。問題は、ユーザーがゲストに電子メールを送信するときに、キーボードが隠れないことです。問題を解決する小さな問題がありますが、それを解決するための同様の投稿を見つけるのはまだ難しいようです. また、スクリーンショットを作成してここに配置します。
ご覧のとおり、メールを送信した後もキーボードは隠れません。
マニフェストに次のコードを追加して、desire アクティビティを作成するのは簡単です。
android:windowSoftInputMode="stateAlwaysHidden"
android:configChanges="keyboardHidden"
キーボード自体を表示および非表示にするときにオーバーライドする必要はありませんが、必要に応じてキーボードを非表示および表示するために使用する 2 つの方法を次に示します。
public void hideKeyboard(final View aView){
aView.post(new Runnable() {
@Override
public void run(){
InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
public void showKeyboard(final View aView) {
aView.post(new Runnable() {
@Override
public void run() {
InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInputFromWindow(ListingScreen.this.getCurrentFocus().getWindowToken(), InputMethodManager.SHOW_FORCED, 0);
}
});
}
hide/show Keyboard を呼び出すときは、現在のビューを渡します。実行可能後スレッドは、ビューの読み込みが完了するまで実行を待機し、その後キーボードを閉じます。
キーボードが開いている場合にキーボードを非表示にする場所でこのメソッドを呼び出します (たとえば、[電子メール] ボタンをクリックして送信するときにこれを呼び出します)。
protected void showVirturalKeyboard()
{
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run()
{
InputMethodManager m = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if(m != null)
{
m.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
}
}, 100);
}
StackOverflow で見つけたすべてのソリューションを試した後、何も機能していないように見えました。最終的に、キーボードを強制的に閉じる方法を見つけましたが、理想的ではありません。
そのアクティビティの Android マニフェストで android:windowSoftInputMode="adjustPan" を設定できます。
これの不幸な副作用については、http : //developer.android.com/guide/topics/manifest/activity-element.html#wsoft で説明されています。
「アクティビティのメイン ウィンドウは、ソフト キーボード用のスペースを確保するためにサイズ変更されません。むしろ、ウィンドウの内容は自動的にパンされるため、現在のフォーカスがキーボードによって隠されることはなく、ユーザーは入力内容を常に確認できます。これは通常、ウィンドウの見えない部分にアクセスして操作するには、ユーザーがソフト キーボードを閉じる必要がある場合があるため、サイズ変更よりも望ましくありません。」
同様の問題がありました。Gmail は、送信後にキーボードを非表示にします。アプリケーションに戻ると、別のことに焦点が当てられます。遅いデバイスを使用すると、メッセージの送信後に Gmail がキーボードを非表示にすることがわかります。