【问题标题】:ListView doesn't scroll to end, when keyboard using使用键盘时,ListView 不会滚动到结束
【发布时间】:2012-08-23 08:15:47
【问题描述】:

当收到或发送新消息时,我的 ListView 应该会自动滚动到结束。 但是,当我使用 Android 键盘从 ListView 下方的 EditText 发送消息时,ListView 已调整大小并且我要发送的新消息出现在屏幕外,我必须向下滚动才能看到它,即使键盘消失并且 ListView 再次调整大小。

滚动 ListView 我使用:

listView.postDelayed(new Runnable() {
@覆盖 公共无效运行(){ listView.setSelection(listView.getCount()); } }, 100);

但在我的情况下无法正常工作。

有谁知道它为什么会发生?有没有办法总是滚动 ListView 结束?

谢谢,非常感谢您的帮助!

【问题讨论】:

  • 进入EditText时如何得到显示键盘的事件?

标签: android listview android-listview


【解决方案1】:

在你的代码中试试这个:

listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);

(或通过 XML 布局设置)。

【讨论】:

    【解决方案2】:

    您可以在将选择设置为列表后尝试添加这行代码:

    listView.smoothScrollToPosition(listView.getCount());
    

    生成的代码应如下所示:

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

    【讨论】:

      【解决方案3】:

      将活动清单中的 android:windowSoftInputMode 设置为 adjustPan|adjustResize

      【讨论】:

      • 它不工作。我不想修复活动,因为我在屏幕中有另一个元素,例如左面板。此问题仅针对 ListView。我想使用总是滚动 ListView 到结束的方法。
      • 文档明确表示这是不可能的 - developer.android.com/reference/android/view/…
      猜你喜欢
      • 1970-01-01
      • 2016-05-31
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多