我在显示滚动型的一些数据。在活动启动(方法onCreate)我用数据填充ScrollView,并希望滚动到底部。如何滚动到底在滚动型上的活动启动
我试图用getScrollView().fullScroll(ScrollView.FOCUS_DOWN)
。当我把它作为按钮点击的动作时,它会起作用,但它在onCreate方法中不起作用。
有什么办法如何滚动了滚动中的活动启动的底部?这意味着视图在第一次显示时已经滚动到底部。
我在显示滚动型的一些数据。在活动启动(方法onCreate)我用数据填充ScrollView,并希望滚动到底部。如何滚动到底在滚动型上的活动启动
我试图用getScrollView().fullScroll(ScrollView.FOCUS_DOWN)
。当我把它作为按钮点击的动作时,它会起作用,但它在onCreate方法中不起作用。
有什么办法如何滚动了滚动中的活动启动的底部?这意味着视图在第一次显示时已经滚动到底部。
它需要做如下:
getScrollView().post(new Runnable() {
@Override
public void run() {
getScrollView().fullScroll(ScrollView.FOCUS_DOWN);
}
});
这样的观点是先更新,然后滚动到“新”的底部。后
scrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollview.post(new Runnable() {
public void run() {
scrollview.fullScroll(View.FOCUS_DOWN);
}
});
}
});
可以在布局文件做到这一点:
android:id="@+id/listViewContent"
android:layout_width="wrap_content"
android:layout_height="381dp"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll">
这实际上适合我!道具! – 2012-09-16 10:51:56
太棒了! :) – 2012-10-09 08:46:36
这只适用于你的滚动视图是列表视图。 – 2013-07-03 21:39:52
将下面的代码加到你的数据之后:
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
对我来说,这只适用于postDelayed而不是后期。只有100毫秒的延迟。 – 2013-06-20 08:19:00
完美。 当然与 scrollview.fullScroll(ScrollView.FOCUS_UP)连击; – KNU 2015-01-15 01:46:51
试试这个
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
这是这样做的最佳方式。
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new
ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollView.post(new Runnable() {
public void run() {
scrollView.fullScroll(View.FOCUS_DOWN);
}
});
}
初始化您的UI组件并填充数据后。这些行添加到您的创建方法
Runnable runnable=new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
};
scrollView.post(runnable);
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
},1000);
这也解释了为什么我得到0所有,当我试图用getMeasuredWidth同时初始化我自己的滚动型的子类时。 – Ghoti 2012-07-27 15:01:57