切换 ListView 的自动滚动 - 当用户交互滚动时
Toggle autoscroll of ListView - when scrolled interactively by user
我有一个真实的应用程序 - 您可以在下面屏幕截图的左侧看到它。
并且我在GitHub准备了a very simple test app,你可以在右边看到:
真正的应用程序底部有一个ListView,里面填满了蓝牙相关的日志信息。这种情况经常发生,每秒几次,用户不可能向上滚动并查看特定事件 - 因为列表会自动跳到底部,当新事件出现时添加到列表中。
我的问题是:如何禁用 ListView
的自动滚动 - 当用户向上滚动以及如何在用户滚动到底部时再次启用自动滚动?
这是我非常简单的测试应用程序:
- MainActivity.java(借助 AsyncTask 填充 ListView)
- activity_main.xml(带有 Button 和 ListView 的布局)
如您所见,自动滚动当前由布局中的 XML 属性启用:
<ListView
android:id="@+id/myListView"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
好的,我找到了完美解决我的问题的方法:
<ListView
android:id="@+id/myListView"
android:stackFromBottom="true"
android:transcriptMode="normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
当transcriptMode设置为正常时,则:
The list will automatically scroll to the bottom when a data set
change notification is received and only if the last item is already
visible on screen.
这里是 my updated test project(我还添加了双击侦听器以清除那里的 ListView
)
我有一个真实的应用程序 - 您可以在下面屏幕截图的左侧看到它。
并且我在GitHub准备了a very simple test app,你可以在右边看到:
真正的应用程序底部有一个ListView,里面填满了蓝牙相关的日志信息。这种情况经常发生,每秒几次,用户不可能向上滚动并查看特定事件 - 因为列表会自动跳到底部,当新事件出现时添加到列表中。
我的问题是:如何禁用 ListView
的自动滚动 - 当用户向上滚动以及如何在用户滚动到底部时再次启用自动滚动?
这是我非常简单的测试应用程序:
- MainActivity.java(借助 AsyncTask 填充 ListView)
- activity_main.xml(带有 Button 和 ListView 的布局)
如您所见,自动滚动当前由布局中的 XML 属性启用:
<ListView
android:id="@+id/myListView"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
好的,我找到了完美解决我的问题的方法:
<ListView
android:id="@+id/myListView"
android:stackFromBottom="true"
android:transcriptMode="normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
当transcriptMode设置为正常时,则:
The list will automatically scroll to the bottom when a data set change notification is received and only if the last item is already visible on screen.
这里是 my updated test project(我还添加了双击侦听器以清除那里的 ListView
)