【Android】Android-键盘遮盖界面布局问题

一、在解决Android输入法键盘弹出问题是,我们先来了解几个常用的api
  1. <activity android:windowSoftInputMode= "A"'>

    • A=“stateUnspecified” 依赖系统或者主题去设置键盘弹出
    • A=“stateHidden” 控制键盘不自动弹出
    • A=“stateUnchanged” 保持上一个Activity的键盘弹出属性设置
    • A=“stateAlwaysHidden” 当Activity主窗口获取焦点时,软键盘一直隐藏
    • A=“stateVisible” 在没有输入框的情况下也可点击弹出键盘
    • A=“stateAlwaysVisible” 总是显示状态
    • A=“adjustUnspecified” 默认设置,可能遮挡内容,比较死板
    • A=“adjustResize” 自动调整屏幕大小,留足软键盘空间
    • A=“adjustPan” 系统通过布局移动来调节用户布局,保证输入框一直在视野范围内
  2. <activity android:configChanges="B">

    • B=“keyboard” 键盘模式发生变化,当需要调用自定义键盘时使用
    • B=“keyboardHidden” 打开手机自带键盘 键盘的可用性发生了改变
    • B=“orientation” 横竖屏切换
    • B=“fontScale” 全局字体发生变化
    • B=“ScreenSize” 屏幕大小变化
二、这次的问题是,一个表单填写,键盘挡住下方输入框,每次都得关闭键盘从新点击输入
  1. 解决–首先在清单文件里 activity 中标注:

     <activity android:name="****Activity" 
         android:configChanges="keyboardHidden|orientation|screenSize"
         android:windowSoftInputMode="stateHidden|adjustResize" />
    
  2. 用scrollview包裹布局,并设置键盘遮挡的最后一个EditView控件的监听事件

    lastEdit.addTextChangedListener(new TextWatcher() {

     	@Override
     	public void onTextChanged(CharSequence s, int start, int before, int count) {
     		scrollow.fullScroll(ScrollView.FOCUSABLES_ALL);
     	}
     	
     	@Override
     	public void beforeTextChanged(CharSequence s, int start, int count,
     			int after) {
     	}
     	@Override
     	public void afterTextChanged(Editable s) {
     	}
     });
    

3.扩张:隐藏键盘的方法:

 @Override  
public boolean dispatchTouchEvent(MotionEvent ev) {  

    // 获得当前得到焦点的View 
    View view = getCurrentFocus();  
	IBinder token=view.getWindowToken();
    InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);  
    im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); 
       
    return super.dispatchTouchEvent(ev);  
} 

4.具体什么时候隐藏,可同伙消息传递机制或者点击事件去控制

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值