android软键盘问题小记

本文探讨了在Android应用中处理软键盘布局调整的方法,包括焦点变化时软键盘的显示与隐藏,以及如何通过设置IME选项来避免横屏时EditText宽度溢出屏幕的问题。提供了不同模式下的窗口设置代码及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、android:windowSoftInputMode
1、当有焦点产生时,软键盘是隐藏还是显示

2、是否减少活动主窗口大小以便腾出空间放软键盘

mView.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener() {
			@Override
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus) {
					// 此处为得到焦点时的处理内容
					getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
				} else {
					getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
					// 此处为失去焦点时的处理内容
				}
			}
		});

2、android:imeOptions="actionSearch|flagNoFullscreen"的用法
在做一个把EditText放到到ActionBar中作为搜索框的功能时,设置EditText的属性为android:imeOptions="actionSearch",会遇到一个问题,当在横屏时,EditText的宽度会填充掉屏幕上除了软键盘之外的地方,与需求不符,改为android:imeOptions="actionSearch|flagNoFullscreen"后就OK了。
3、代码设置弹出键盘是否挤压窗口

不挤压窗口:

getActivity().getWindow().setSoftInputMode(
				WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
挤压窗口:

getActivity().getWindow().setSoftInputMode(
				WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

一共四种模式:
SOFT_INPUT_ADJUST_NOTHING
SOFT_INPUT_ADJUST_PAN
SOFT_INPUT_ADJUST_RESIZE

SOFT_INPUT_ADJUST_UNSPECIFIED

4、有时候无法调起键盘

有时候发现用下面代码无法调起键盘:

InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
		imm.showSoftInput(mView, 0);
有可能焦点已经落在其他非编辑框View上了,延迟一下可能就好了。输入法弹出时,会检测当前的焦点View是否有效,如果非有效的焦点View,输入法是弹不出来的。

mView.postDelayed(new Runnable() {
			@Override
			public void run() {
				InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
				imm.showSoftInput(mView, 0);
			}
		}, 100);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值