当键盘出现时,Android 如何调整布局大小

11

我希望在键盘出现时重新定位布局,例如在编辑文本字段时,以便能够看到聚焦的字段。我尝试使用windowSoftInputMode但是没有任何区别。如何实现?谢谢。

<activity 
            android:name="com.xxxx.projecte1.TabBar_Activity"      
            android:theme="@android:style/Theme.NoTitleBar"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:windowSoftInputMode="adjustResize"
           />

请参阅 https://dev59.com/XmQn5IYBdhLWcg3w_LTx。 - CoolMind
3个回答

11
   <activity
        android:name=".WActivity"
        android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode"
        android:icon="@drawable/navigation_two"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/appTheme"
        android:windowSoftInputMode="adjustResize" />

1
android:windowSoftInputMode="adjustResize" 对我很有效。 - Roman
1
非常感谢。android:windowSoftInputMode="adjustResize" - okdear

9

对于可能有类似问题的其他人:

在我的情况下解决问题的方法仅仅是将以下内容放入:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

将以下代码添加到我的活动的onCreate方法中。

完全不需要进行任何xml更改,因为对我根本没有用,但是这个解决方案立即像魔法一样起作用。虽然xml解决方案对我来说更好,但即使是相同的参数也无法正常工作。

分享这个解决方案,因为我在网上没有找到快速且简单的解决方案。


1
谢谢。原来,如果您正在使用标志View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN修改systemUiVisibility,则应使用setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)来设置adjustResize标志。不要忘记在根布局上设置android:fitsSystemWindows =“true”(如果您正在使用滚动视图,则在其下)。 - farhanjk
1
SOFT_INPUT_ADJUST_RESIZE已经被弃用。 - Konstantin Konopko

1

我认为问题出在你的代码中这一行:

android:configChanges="keyboardHidden|orientation|screenSize"

这行告诉了 Android 你的 Activity 会自己处理这三种事件。如果你把这行去掉,我相信你就能得到想要的效果。

请点击这里查看 configChanges 属性。


@Jaume 请看一下之前的 Stack Overflow 帖子:链接。希望能帮到你 :) - AggelosK

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