事情要从第一台设备说起,这台设备有物理键盘,需求就要求无论我怎么点输入框都不允许出现软键盘。
于是就在网上各种筛选,最终找到合理的解决方案
public void SetNoInput(Activity activity, EditText et_input)
{
if (android.os.Build.VERSION.SDK_INT <= 10)
{
et_input.setInputType(InputType.TYPE_NULL);
} else
{
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.
SOFT_INPUT_STATE_ALWAYS_HIDDEN);
try
{
Class<EditText> cls = EditText.class;
Method setSoftInputShownOnFocus;
setSoftInputShownOnFocus = cls.getMethod("setShowSoftInputOnFocus",boolean.class);
setSoftInputShownOnFocus.setAccessible(true);
setSoftInputShownOnFocus.invoke(et_input, false);
} catch (Exception e)
{
e.printStackTrace();
}
}
}
然后又有了第二台设备,这个设备又需要弹出软键盘了
1.要求进来后先不弹,点击以后再弹
隐藏软键盘
InputMethodManager imm = (InputMethodManager) activity.
getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen = imm.isActive();
if (isOpen)
{
// imm.toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);//没有显示则显示
imm.hideSoftInputFromWindow(et_input.getWindowToken(), 0);//隐藏软键盘
}
显示软键盘
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(et_input, 0);
隐藏软键盘
WindowManager.LayoutParams params = activity.getWindow().getAttributes();
activity.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
显示软键盘
WindowManager.LayoutParams params = activity.getWindow().getAttributes();
activity.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;