【问题标题】:Push Listview when keyboard appears without adjustPan在没有adjustPan的键盘出现时推送Listview
【发布时间】:2013-04-21 16:54:51
【问题描述】:

我正在尝试创建一个带有列表视图和底部发送消息的活动。问题是当键盘显示时,而不是推动底部内容,只是隐藏它。我尝试使用 adjustPan,但它会将孔视图向上推(因此无法看到列表视图的顶部元素,并且操作栏也消失了)。

如果你看一下 WhatsApp 或 Line,其功能是当列表的最后一项显示在屏幕底部时,键盘将 listview 向上推(不取出操作栏或第一个元素屏幕),并且当列表的最后一项未显示时(向上滚动后),键盘隐藏在底部列表中(正常的调整大小)。

有人处理过这个问题吗?

谢谢

编辑:

我会试着举一个直观的例子:

所以让我们说这个 ListView:

---item 1---  
---item 2---  
---item 3---  
---item 4---  
---EditText---

editText 不是 ListView 的一部分,而是底部对齐的 LinearLayout。当显示键盘时,ListView 变成这样(第 3 项和第 4 项被键盘隐藏):

---item 1---  
---item 2---  
---EditText---
---Keyboard---  

而我想得到的是:

---item 3---  
---item 4---  
---EditText---
---Keyboard---  

我试过 android:windowSoftInputMode="adjustPan"。结果是第 3 项和第 4 项有效地被向上推,不再被键盘隐藏。问题是它推动了列表视图,但它把它推出了屏幕,所以 actionBar 消失了,即使尝试向上滚动,我也永远看不到显示键盘的 Item 1 和 2。

希望我自己解释一下,并不容易..

谢谢

【问题讨论】:

  • 你能发一张它目前的截图吗,我不太清楚问题是什么。
  • 我添加了一个示例来尝试解释。谢谢

标签: android android-listview android-softkeyboard


【解决方案1】:

好的,我已经为您找到了解决方案,您要做的基本上就是让 ListView 每次都滚动到底部。你可以这样做:

ListView l = getListView();
l.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
l.setStackFromBottom(true);

如果是Activity,请在onCreate 中执行。如果是Fragment,请在onViewCreated 中执行。

【讨论】:

  • 嗨,谢谢。它实际上确实将 listView 滚动到底部。问题是当我向上滚动列表视图,然后显示键盘时,它再次将列表视图滚动到底部。这将使用户失去他所看到的项目。举个例子,如果你有的话,看看你的 whatsapp/LINE 应用程序。当你打开它时,listview在底部,显示键盘,你仍然看到最后一个项目,移除键盘并向上滚动,然后再次显示键盘,listview没有滚动到底部......再次感谢
  • 啊,我明白了你想要什么,我已经更新了答案,并对其进行了测试,应该完全按照你说的做。如果它也为您解决了问题,请接受。
  • 该死的。我不敢相信所有失去的时间xD。谢谢
  • 并且不要忘记请求焦点。 lstMessages.requestFocus();然后清除它并在需要时请求其他元素焦点
  • 或在您的布局中将这些行添加到您的listViewandroid:transcriptMode="alwaysScroll" android:stackFromBottom="true"
【解决方案2】:

在您的布局 XML 中:

android:stackFromBottom="true"
android:transcriptMode="normal"

【讨论】:

  • android:stackFromBottom="true" 不需要
【解决方案3】:

单线解决方案

list_view.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多