ListView 获取精确滚动值
ListView 获取精确滚动值
@[Android|listview|滚动]
场景
当我们要求listview一往上滚动的时候,下面的tab栏或者别的在下面浮空的东西,或者上面的ActionBar也是可以要求往上滚动(例如google plus),这个时候我们需要精确的ListView 滚动值,而不某个Item往上滚动了,毕竟是用了卡片设计后会出现一行会很高的情况,这时候过了一个在往下滑动明显就不合适了
获取的方法很简单看代码
package org.hangox.test; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.AbsListView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import com.lidroid.xutils.util.LogUtils; import java.util.ArrayList; import butterknife.ButterKnife; import butterknife.InjectView; /** * Created With Android Studio * User 47 * Date 2014-10-28 * Time 23:27 */ public class ListViewScrollTest extends ActionBarActivity{ @InjectView(R.id.listView) ListView listView; View headView ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_scroll); ButterKnife.inject(this); ArrayList<String> stringArrayList = new ArrayList<String>(); for(int i = 0 ;i < 10000; i ++){ stringArrayList.add(i+""); } listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, stringArrayList)); headView = new TextView(this); // listView.addHeaderView(headView); listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { LogUtils.i(getScrollY()+""); } }); } public int getScrollY() {//获取滚动距离 View c = listView.getChildAt(0); if (c == null) { return 0; } int firstVisiblePosition = listView.getFirstVisiblePosition(); int top = c.getTop(); int headerHeight = 0; if (firstVisiblePosition >= 1) { headerHeight = listView.getHeight(); } return -top + firstVisiblePosition * c.getHeight() + headerHeight; } }
不要问我为什么,只是知道这样可以获取到滚动距离,但是具体原因还没有分析
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!