ScrollView自动滚动实现

今天写代码时有个场景是,需要向ScrollView中的LinearLayout动态添加TextView,这样当TextView添加到一定数量后,当前屏幕就无法显示最新添加的TextView了,ScrollView默认是不会自动滚动的。那么就需要实现随着新的TextView添加进去后,ScrollView自动滚动到最新添加的TextView。

可以借助ScrollView中的scrollTo(int x,int y)函数来实现,

void android.widget. ScrollView.scrollTo( int x, int y)
Set the scrolled position of your view. This will cause a call to onScrollChanged(int, int, int, int) and the view will be invalidated.This version also clamps the scrolling to the bounds of our child.
业务代码很简单,在添加了TextView后,
int offset = LinearLayout.getMeasuredHeight() - scroll.getHeight();
if (offset > 0) {
        scroll.scrollTo(0, offset);
 }
getMeasuredHeight()是获取控件的实际高度,getHeight()是获取控件显示在屏幕上的高度,比如LinearLayout只有一半内容在屏幕上显示,假设为全屏显示,屏幕高为720,那么getHeight()=720,getMeasuredHeight()=1440.
或者:
handler.post(scrollRunnable);
scrollRunnable = new Runnable() {
            @Override
            public void run() {
                int offset = ll_container.getMeasuredHeight() - scroll.getHeight();
                if (offset > 0) {
                    scroll.scrollTo(0, offset);
                }
            }
        };

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值