
使用環境:
普通的輸入框輸入數據時,界面上移已經滿足不了變態的項目經理……
使用方法:
1 清單文件常規聲明
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustPan"

2 xml文件中部分屬性配置:

3 代碼獲取虛擬鍵盤彈出后各個佈局的具體數據,并進行比對獲取到一個合適的上移距離:
int srollHeight, recordVisibleRec;
private void controlKeyboardLayout(final View root, final View scrollToView) {
root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//獲取當前界面的高度 虛擬鍵盤的頂點位置也就是當前界面的底部高度
Rect rect = new Rect();
root.getWindowVisibleDisplayFrame(rect);
int rootInvisibleHeight = root.getRootView().getHeight() - rect.bottom;
if (Math.abs(rootInvisibleHeight - recordVisibleRec) > 200) {
if (rootInvisibleHeight > 200) {
int[] location = new int[2];
scrollToView.getLocationInWindow(location);
srollHeight = (location[1] + scrollToView.getHeight()) - rect.bottom;
srollHeight = 0 - (srollHeight /4);
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(scrollToView, "translationY", 0f, srollHeight);
objectAnimator.setDuration(500);
objectAnimator.start();
} else {
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(scrollToView, "translationY", srollHeight, 0f);
objectAnimator.setDuration(500);
objectAnimator.start();
}
}
recordVisibleRec = rootInvisibleHeight;
}
});
}
調用方法:

碼雲傳送:https://gitee.com/longlyblack_admin/MVVM_Databinding
具體更好的優化方案在摸索中,目前也是初步探索……
更多交流,歡迎來訪:88627109
愿自己永無BUG!

本文介绍了一种在虚拟键盘弹出时调整布局的方法,通过获取键盘弹出后的具体数据,计算并应用合适的上移距离,实现界面平滑过渡,提升用户体验。
1万+

被折叠的 条评论
为什么被折叠?



