版本1.0
小键盘弹起来时问题的表现
- 把所有的布局往上顶起,这有自定义的头部也被顶出屏幕
- 只把EditText顶起,但是其他不顶起
希望效果:
- 个别的控件停留在顶部不移动(如自定义的标题)
- 其他控件随着键盘弹起向上移动,例如评论时,能一直看到最后的品论信息
解决方法:
- mainfest设置:
android:windowSoftInputMode="stateUnchanged|adjustResize"
- 布局文件中使用相对布局
- 把希望随着屏幕移动的控件与EditText关联起来(用id,在…之上等)
版本2.0
新的需求:
小键盘弹起是把布局全部往上顶起,本来上面的可以解决
但是现在布局因为适配问题可能要上下滑动,然后上面的就没有效果了,
不能设置EditText的相对位置,导致无法生效
解决办法
- mainfest设置:
android:windowSoftInputMode="stateUnchanged|adjustResize"
- 在EditText布局外的ScrollView,在最外边的父控件设置 getViewTreeObserver().addOnGlobalLayoutListener
mScrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = mScrollview.getRootView().getHeight() - mScrollview.getHeight();
if (heightDiff > 300) { // 说明键盘是弹出状态
//滑动到最后
//mScrollview.fullScroll(ScrollView.FOCUS_DOWN);
} else {
}
}
});
记录所见所得,有时候换个思路,就直接解决了,等待更好的方法。