Alo*_*Leo 8 android listview scroll
我在listview上经历了平滑滚动的奇怪行为.我有30个项目在列表中.当我顺利滚动通过
listview.smoothScrollToPositionFromTop(29, 0);
Run Code Online (Sandbox Code Playgroud)
屏幕末尾会有一些额外的空间.实际上listview转移了一点.附图如下.但如果我手动滚动,将没有空间.可以采取哪些措施来解决此问题?
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_orange_light">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
正如你所说,我认为这是一个 Android 问题。它似乎是过度滚动动画的一部分,它似乎在完成动画之前被“卡住”。我也有过类似的经历SwipeToRefresh,刷新后进度指示器没有完全消失。
不管怎样,你可以通过关闭动画来解决
listView.setOverScrollMode(View.OVER_SCROLL_NEVER);
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使手动滚动,也会丢失动画。如果你能忍受这一点,我想这会解决你的问题。
AbsListView#setOverScrollMode(int)
编辑:(原始答案被接受后)
我还找到了另一种解决方法。这个保留了滚动动画。不幸的是,它还有另一个缺点。如果用户在执行其他操作之前自动滚动,则存在底部边框的相同问题。如果用户手动滚动到底部第一个,从那时起就没有问题了。如果用户自动滚动并获取边框,然后手动滚动,就不再有问题了。所以,这是替代方法。
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.invisible_footer, null);
listView.setOverscrollFooter(drawable);
Run Code Online (Sandbox Code Playgroud)
在可绘制文件夹中,“invisible_footer.xml”
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="2dp"
android:width="10dp"
android:viewportWidth="10"
android:viewportHeight="2">
<!-- a horizontal line -->
<path android:pathData="M 1 1 H 10"
android:strokeColor="#00000000" android:strokeWidth="1" />
</vector>
Run Code Online (Sandbox Code Playgroud)
ListView.html#setOverscrollHeader()
这给出了选择:
| 归档时间: |
|
| 查看次数: |
1291 次 |
| 最近记录: |