Androidソフトキーボード処理
2297 ワード
弾いた時の最初のパラメータViewは、EditTextまたはそのサブクラスが望ましい. レイアウトは、ロードが完了する必要があります.(遅延ロードによる解決、View.postDelayed()はソリューション) 隠した時は、1つのview に依存する必要がある.はやはり遅延処理によって完成する、効果がある である.
まだ効果がないなら、300 msのように時間を大きくします.
ソフトキーボード非表示部分コンポーネントの処理TODO
https://www.jianshu.com/p/89eec61fa699
まだ効果がないなら、300 msのように時間を大きくします.
ソフトキーボード非表示部分コンポーネントの処理TODO
https://www.jianshu.com/p/89eec61fa699
/**
*
*
* @param view
*/
@RequiresApi(api = Build.VERSION_CODES.CUPCAKE)
public static void showSoftKeyboard(final View view) {
if (view == null) {
return;
}
view.setFocusable(true);
view.setFocusableInTouchMode(true);
if (!view.isFocused()) {
view.requestFocus();
}
view.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager inputMethodManager = (InputMethodManager) view.getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(view, 0);
}
}, 100);
}
/**
*
*
* @param view
*/
public static void hideSoftKeyboard(final View view) {
if (view == null) {
return;
}
view.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager manager = (InputMethodManager) view.getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 100);
}
/**
* 2/3
* @param context
* @return
*/
public static boolean isSoftShowing(Context context) {
//
int screenHeight = ((Activity)context).getWindow().getDecorView().getHeight();
// View bottom
Rect rect = new Rect();
// DecorView activity view
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
((Activity)context).getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
}
// ( :screenHeight = rect.bottom + )
// screenHeight*2/3
return screenHeight*2/3 > rect.bottom;
}