使用環境:
普通的輸入框輸入數據時,界面上移已經滿足不了變態的項目經理……
使用方法:
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!