阻止键盘布局隐藏工具栏但显示滚动内容

时间:2016-09-27 13:30:13

标签: java android android-layout android-softkeyboard

我的问题的最佳描述是

Keyboard layout hiding android action bar?

我会在这里粘贴引用: " 我也有这个问题,但不同的是,我的编辑文本上面有一个列表,不能使用滚动容器。如果我在编辑文本聚焦时使用adjustResize,它将显示在列表上方,列表中的最后一项将被遮盖(列表不会被推高)。另一方面,如果我不使用adjustResize,当edittext聚焦时,它会推动所有内容,但是acionbar是隐藏的,而且我也无法滚动到列表的顶部。有人可以为此分享解决方案吗?"

enter image description here enter image description here

所以

  • 我有一个工具栏
  • 然后是聊天内容
  • 然后是一个用于发送消息的底栏(editText和一个按钮)

现在,当我点击ediText并打开软键时,我不希望我的工具栏崩溃和隐藏,但我确实希望我的聊天内容向上滚动,因此在底部条目上方我会看到最后一个来自聊天内容的消息(在listView中)。

我已经为Activity adjustResize或adjustPan尝试了许多组合,但它们都没有工作。即使在CoordinatorLayout和AppBarLayout中包装工具栏,但仍然没有结果。要么我的内容被正确推送/滚动,但工具栏会隐藏OR工具栏,但softKeyboard会重叠最后几条消息。

我分享的解决方案是一种解决方法。我已经实现了一个函数scroll(),以便在新消息到达时滚动我的内容,这是我之前实现的一个函数。我错过了另一部分,即检测softKeyboard何时打开,以便我可以滚动我的内容。

这很容易找到 How to check visibility of software keyboard in Android?

我希望有人会发现这种解决方法很有用,至少可以睡几个小时。

注意: 滑动内容的动画与softKeyboard向上滑动不一致。键盘打开后,我滚动,这是不同步的。这只是一个瞬间。但是在我找到使用原生Android组件或布局编排此事件的更好解决方案之前,我并不关心这一点。

1 个答案:

答案 0 :(得分:0)

上述所有方法的最简单和最佳解决方案是简单地使用以下内容:

listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);