android 登录界面 软键盘,Android 登录界面软键盘弹出以后界面上移

这篇博客主要是介绍在登陆界面,由于软键盘的弹出导致登录按钮不可见对于,造成不好额用户体验进行修改。

主要是实现,在输入账号和密码的使用使界面上移,到达登录按钮显示的效果。

本篇博客主要是通过LayoutParams实现 (弊端 效果是瞬间完成,可以通过Scroller或者动画实现平滑一定效果)

布局界面很简单就不给代码,文章最后会给上源码下载地址

核心代码

private void adjustLayout() {

root.getViewTreeObserver().addOnGlobalLayoutListener(

new ViewTreeObserver.OnGlobalLayoutListener() {

@Override

public void onGlobalLayout() {

int height = root.getRootView().getHeight() - root.getHeight();

if (height > 100) { // 如果高度超过100像素 可能是软键盘 这个地方判断需要注意 是在没有ActionBa的前提

// 进行界面移动处理

// 如果软键盘已经显示 直接返回

if (showSoftInputFlag) {

return;

}

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)

inputBox.getLayoutParams();

// 计算软键盘弹出后 输入区域的上边距

params.topMargin = rootHeight - height - inputBox.getHeight();

inputBox.setLayoutParams(params);

// 设置注册按钮在软键盘弹出后不显示在可见界面上

params = (RelativeLayout.LayoutParams) register.getLayoutParams();

params.bottomMargin = -register.getHeight();

register.setLayoutParams(params);

// 修改是否显示软键盘的标记

showSoftInputFlag = true;

} else {

if (!saveOldDataFlag) { // 实现初始化原始值 方便后面软键盘隐藏以后界面恢复

rootHeight = root.getHeight();

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)

inputBox.getLayoutParams();

inputBoxTopMargin = params.topMargin;

params = (RelativeLayout.LayoutParams) register.getLayoutParams();

registerBottomMargin = params.bottomMargin;

saveOldDataFlag = true;

}

// 软键盘没有显示直接返回

if (!showSoftInputFlag) {

return;

}

// 回复界面在不显示软件盘时候的布局

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)

inputBox.getLayoutParams();

params.topMargin = inputBoxTopMargin;

inputBox.setLayoutParams(params);

params = (RelativeLayout.LayoutParams) register.getLayoutParams();

params.bottomMargin = registerBottomMargin;

register.setLayoutParams(params);

// 修改软件盘显示的标记

showSoftInputFlag = false;

}

}

});

}

还有一个需要注意的地方

在 清单文件文件中 配置该activity

android:windowSoftInputMode="stateAlwaysHidden|adjustPan" 去掉actionbar有好多方法,这个看自己的实现吧

源码下载地址:

穿越吧,若曦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值