Android——控制ListView滚动

27 篇文章 0 订阅

在做一个模拟聊天的项目时,将聊天内容呈现在ListView中,想要达到ListView随着item的插入自动滚动,以及在页面下面有一个输入文本,点击输入文本时弹出一个软键盘,希望ListView能在弹出软键盘的自动滚动合适的距离。

只弄出了一个不完善的方法
1.在MainActivity中为填充的的View(activity_main.layout),设置添加布局变化监听addOnLayoutChangeListener

container.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {

                if(oldBottom-bottom>0)
                lv.smoothScrollBy(oldBottom-bottom,100);
            }
        });

当页面布局变化,也就是调出了软键盘的时候,调用listView的smoothScrooBy方法进行滚动,但这里我限制了只在弹出软键盘时进行滚动(不加条件判断会出现滚动异常:没弄懂)。

2.在添加为ListView添加数据时,也就是listView的adapter调用add方法后,进行一个滚动,取得ListView添加的item的高度,通过adapter的getView方法

 private int getHeight() {
        View v = adapter.getView(adapter.getCount() - 1, null, lv);//最近添加的item
        v.measure(0, 0);
        return v.getMeasuredHeight();
    }

得到高度进行滚动

lv.smoothScrollBy(getHeight());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值