【问题标题】:Android scroll to the bottom of a listviewAndroid滚动到列表视图的底部
【发布时间】:2013-01-22 09:10:19
【问题描述】:

这不是对另一个问题的重复。它更像是一个扩展。我希望:)

我有一个列表视图,其中包含数百个项目。它们是另一个视图中带有日期戳的条目。

当我显示屏幕时,我希望它滚动到底部,以便显示最近的项目,但以一种合乎逻辑的“事情结束”的方式。

m_list.setSelection(m_list.getCount()-1);

Kewl as... 但是 :( 现在我的列表不会滚动。它似乎卡在底部。我可以看到“卡车”,它很小而且在底部。

好的..所以我的任务就是这样..我如何从滚动到底部开始,但仍然允许用户(我)在他们(我再次)想要向上滚动时向上滚动。

【问题讨论】:

  • 在哪里调用 setSelection 函数?
  • 天哪!这个问题太棒了,我在我的 ondraw 中调用它。它最初是我测试代码的一部分......太棒了!
  • 赞成一个 bril' 答案?
  • @MollyCat 用户,如果你解决了这个问题,我能得到正确答案吗?

标签: android listview scroll


【解决方案1】:

在 XML 中的 listview 上设置以下内容。

android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"

【讨论】:

  • 实际上并没有。我已经有了 m_list.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);在我的代码中。我的列表似乎被锁定了。
  • m_list.setStackFromBottom(true);似乎也没有做任何事情。注意.. 我没有在 XML 中定义我的 ctrl
  • 我接受了这个答案,因为一旦我意识到我有一个错误,这个和我的代码让一切正常工作
【解决方案2】:

您可以使用以下代码到达列表视图的底部。

listView.postDelayed(new Runnable() {
        @Override
        public void run() {
            listView.setSelection(listView.getCount());
        }
    }, 500);

这会将延迟设置为 500 毫秒。或者你可以使用

listView.post(new Runnable() {
        @Override
        public void run() {
            listView.setSelection(listView.getCount());
        }
    });

这将实用地滚动您的列表视图。

【讨论】:

  • 这不会滚动到底部。正如方法名称所暗示的那样,这将把您的选择设置在最后一项的顶部。如果您的项目很长(例如,长标题),这将无济于事。
  • listView.setSelection(listView.getCount());应该是 listView.setSelection(listView.getCount() - 1);
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 2016-04-26
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
相关资源
最近更新 更多