在我的Android应用程序中,在登录页面上,有两个edittext字段用户名,密码。问题是当我点击密码时,弹出键盘然后大部分密码字段被键盘覆盖。
我想基本上有一个动画,当键盘弹出时,两个字段向上(平滑)移动,当键盘消失时,字段应该平滑地返回。有谁知道我怎么能这样做?
另外,我想避免使用固定数量的像素来移动,因为这将取决于设备。如果可能的话可能会使用像ems单位这样的东西,因此它适用于所有屏幕密度。
由于
答案 0 :(得分:2)
要执行此操作,您必须实现* addOnGlobalLayoutLitener。使用scrollview包装整个子视图,然后滚动布局。通过更改滚动值来测试您的应用。 *
final View activityRootView = findViewById(R.id.signinRootView);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView()
.getHeight() - activityRootView.getHeight();
if (heightDiff > 100) {
((ScrollView) findViewById(R.id.scrollview))
.scrollTo(0, findViewById(R.id.et_password)
.getBottom() + 80);
} else
((ScrollView) findViewById(R.id.scrollview))
.scrollTo(0, 0);
}
});
**