当 Android 软键盘弹出或隐藏时调整布局。

6
我的目标是实现大多数消息应用程序(如Facebook Messenger、Viber、WhatsApp)在显示附件表时所做的操作。如果软键盘可见并且用户想要附加内容,则键盘将被隐藏,并在其位置上呈现附件表。
为了使此功能正常工作,布局更改应在根视图大小更改时发生。否则,在键盘显示/隐藏之前不久会出现图形故障。
如果我能在键盘隐藏的确切时刻更改布局,就可以正确地实现它。我尝试使用onGlobalLayoutListener,但没有达到预期的结果。

enter image description here

3个回答

0
将此行添加到您的活动清单中。
 <activity
        android:name="com.your.Activity"
        android:windowSoftInputMode="stateHidden|adjustPan" />

这并没有帮助。我想要键盘改变布局,但当它被隐藏时,我希望能够保持布局在先前的位置,以便显示附件视图。我无法弄清楚所有这些应用程序如何获得此行为。 - Petrakeas
尝试使用以下代码:android:windowSoftInputMode="stateHidden|adjustPan|adjustNothing" - Nikhil bohra

0

使用这段代码会很有帮助。

android:windowSoftInputMode="adjustNothing"

当键盘出现时,我希望布局能够改变。当键盘消失时,我希望能够用附件视图替换键盘。 - Petrakeas

0

找出你的布局是否因为键盘(消失)而改变并对其进行操作的最佳位置是在根布局的onMeasure()内部。

更详细地说,我制作了一个自定义LinearLayout,它被用作我的根布局。我重写了onMeasure计算当前键盘高度。根据键盘的高度以及我的附件网格是否可见,我会更改附件网格的可见性。我甚至可以将网格的高度设置为与键盘相同。

结果看起来就像网格始终在键盘下方,文本视图仍然保持在同一垂直位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接