開閉softkeyboard(Galaxy S)
-
25-09-2019 - |
質問
大丈夫、変な問題です。私の活動Main.java やDialogLikeActivity.java.
に 主 していま
EditText (articleNumber) - phone input type (in .XML)
Button (articleOK)
list (list)
月 DialogLikeActivity (活動が風とのダイアログテーマと android:windowSoftInputMode="stateAlwaysVisible" タグのマニフェストしていま
EditText (articlePackaging) - phone input type (in .XML)
Button (finish)
私が欲しがっているのか?入口や階段に入れない主な活動にキーボードが開く電話input typeことになる。私はクリックしEditTextの分野ごとに何かを入力して"OK"します静varibleな状態1メインメニューからツールキーボード)"でよろしいでしょうか静的変数の主な活動です。
public static int keyboardMode = 1;
クリックOK開DialogLikeActivityキーボードオープン(電話入力タイプ)です。私は[OK]をクリックしonResumeのメインキ
@Override
public void onResume() {
super.onResume();
if (keyboardMode == 1) {
showKeyboard(articleNumber);
} else {
hideKeyboard(articleNumber);
}
}
public static void showKeyboard(View view) {
InputMethodManager mgr = (InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
((InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(view, 0);
articleNumber.setInputType(InputType.TYPE_CLASS_PHONE);
}
public static void hideKeyboard(View view) {
InputMethodManager mgr = (InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);
}
// Listener to showKeyboard if user clicks on EditText field and set InputType to PHONE, insted it would remain (0)
articleNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showKeyboard(articleNumber);
}
});
// Listener so when user touches the list - it hides the keyboard and sets variable on 2 so keyboard is always HIDDEN
list.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
hideKeyboard(articleNumber);
keyboardMode = 2;
return false;
}
});
// Listener so when user clicks on ArticleOK - keyboard is always OPEN
articleOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
keyboardMode = 1;
Intent i = new Intent(NewOrderArticles.this, NewQuantityDialog.class);
i.putExtra("articleid", articleId);
startActivity(i);
}
}
});
が認められるとキーボードが開く電話を入力タイプです。まhowewerク/クロールのリストをメインkeyboardMode変数が2(非表示)でのキーボードを隠す(hideKeyboardと呼ばれる手法です。onTouch listener).ればをクリック項目のリストを再度開DialogLikeActivityオープンのキーボード、電話で入力タイプです。れば[OK]をクリックしonResumeメインキや隠キーボード参照コードupthere).
いように見えるビデオをご覧ください(OKボタンがarticleOKボタン)- ビデオ(3,24MB).
う-ん[OK]をクリックし(articleOK)ボタン キーボードをもつことを示す必要があ, いしの開始にスクロール下のリストまたはをクリック項目のリスト キーボードできるようにしDialogLikeActivity活動, 他に主な滞在を隠し(昇、雨などの天候によればをクリックしEditTextの分野のトップで。
ビデオでご覧"HTC Desireやべての動作をしたいもの-Galaxy Sの メインメニューからツール部 は、をタップするとスクロールのリスト してオープンのキーボード文字タイプ(!) の代わりに隠れていま.が問題なのでしょうか。
でOKボタンメインメニューからツールキーボード(主DialogLikeActivity).場合はをタップするとスクロールの一覧を示すキーボードのみDialogLikeActivity.
解決
私は同じ問題とEditTextのジャンのキーボードます。クリックした後、OKボタンまたはCancelでは、仮想キーボードしない非表示を示すキーボード文字タイプ、Samsung Galaxy S装置です。このクラスタ上でのエミュレータ2.1 2.2っHTCヒーローませんのでご注意くださいSamsung Galaxy S"デバイス2.2となります。にも挑戦しました:mgr.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0);ものはなかなか機会のない
編集:ok、問題をこのラインのみ:
mgr.toggleSoftInput(0, 0);
となくこれら2つのライン:
mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);