我希望我的活动在每次显示时都进行滚动。 我使用此代码:
@Override
public void onResume() {
ViewTreeObserver vto = maxButton.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
maxButton.getViewTreeObserver().removeOnGlobalLayoutListener(this);
float y = maxButton.getY();
findViewById(R.id.map_activity_scrollview).scrollTo(0, (int) (y - 2*Constants.SCREEN_HEIGHT/3));
}
});
ConstraintLayout cl = findViewById(R.id.map_activity_constraint);
Button b = new Button(this);
cl.addView(b); // triggers the listener
cl.removeView(b);
super.onResume();
}
在不添加按钮的情况下,它仅在第一次显示活动时有效。 这就是为什么我人为地添加和删除按钮的原因。
是否有一种更清洁的方法?
答案 0 :(得分:0)
如果用“显示”来表示onResume
,并且基于您的代码,我认为您是这样做的,为什么不试一下呢?
@Override
public void onResume() {
super.onResume();
maxButton.post(new Runnable() {
@Override
public void run() {
float y = maxButton.getY();
findViewById(R.id.map_activity_scrollview).scrollTo(0, (int) (y - 2*Constants.SCREEN_HEIGHT/3));
}
}
}