Android 软键盘显示与隐藏

Activity初始化后,如果有EditText,则自动弹出软键盘。

如果不想弹出软键盘,在清单文件下对应Activity节点下配置

android:windowSoftInputMode="stateHidden"

点击EditText意外的界面,让软键盘消失:

@Override
	public boolean onTouchEvent(MotionEvent event) {
		InputMethodManager imeManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
		imeManager.hideSoftInputFromWindow(getWindow().getDecorView()
				.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
		return super.onTouchEvent(event);
	}

呼出软键盘:

有时候一个密码框输入密码需要去服务器验证,如果验证失败,应该自动呼出软键盘,提示用户重新输入密码:

下面的例子中,et_psw是一个EditText的组件,将密码框内容清空,然后让密码框获取焦点,最后将软键盘呼出(使用InputMethodManager的toggleSoftInput(int ,int) 方法)

// 呼出软键盘
	private InputMethodManager m; // 软键盘管理器
	private void showSoftKeyBorad() {
		et_psw.setText("");
		et_psw.requestFocus();
		if (m == null) {
			m = (InputMethodManager) DetailActivity.this.getBaseContext()
					.getSystemService(INPUT_METHOD_SERVICE);
		}
		m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
	}


还有一种方法,让界面上永远不弹出来输入法面板,即使界面上有EditText也不可以。只有一行代码,写在Activity 中 onCreate 方法内,setContentView之前。

@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.getWindow().setFlags(  //这行设置代码屏蔽了输入面板,无法使用输入法
				WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
				WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
		setContentView(R.layout.activity_main);

	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值