十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
之前写注册页面的时候,UI同学给我提了个意见,让弹出软键盘时候,左上角的标题“注册”不动,中间内容往上移动,效果这样
经过查阅资料和多方实践,解决方法如下
1、先要设置页面软键盘模式,这样每次软键盘弹出后布局高度会减少软键盘的高度
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN
| WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
2、找出内容view,在每次布局为软键盘弹出减小高度时监听,改变内容view
mVContent = findViewById(android.R.id.content);
ViewTreeObserver.OnGlobalLayoutListener mLsnrLayout =
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout () {
Rect rect = new Rect();
mVContent.getWindowVisibleDisplayFrame(rect);
int height = rect.height();
boolean isImmShow = height < UcApp.sHeightPx;
if ( isImmShow != mIsImmShow ) {
mIsImmShow = isImmShow;
mUbtnCommit.setVisibility(isImmShow ? View.INVISIBLE : View.VISIBLE);
}
}
};
mVContent.getViewTreeObserver().addOnGlobalLayoutListener(mLsnrLayout);
XML格式是这样的,标题我是在基类上设置加上的
public void setTitle (String txt) {
if ( null == mTvTitle ) {
mTvTitle = new TextView(UcApp.sCtx);
((FrameLayout) getWindow().getDecorView()).addView(mTvTitle);
ViewUtils.inst(mTvTitle)
.setMargins(119, 54, 0, 0)
.setTextSize(42);
mTvTitle.setTypeface(Typeface.DEFAULT_BOLD);
mTvTitle.setTextColor(ComUtils.getClr(R.color.white_f2f2f2_60));
}
mTvTitle.setText(txt);
}
就是设置了margin
因为内容布局是竖直居中的,标题是margin写死的,所以布局高度变了以后内容移动标题不动。
希望这篇文章能帮助大家,大佬勿喷~
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。