显示键盘时如何向上移动整个布局?

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <LinearLayout android:layout_gravity="bottom" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </FrameLayout> 

在清单中:

  android:windowSoftInputMode="adjustPan" 

初始行为:

在这里输入图像说明

目前的行为:

在这里输入图像说明

期望的行为:

在这里输入图像说明

如何达到预期的布局行为? adjustResize不适合,因为此选项调整布局大小。

谢谢你的回答!

Solutions Collecting From Web of "显示键盘时如何向上移动整个布局?"

你可能想看看这个答案 。 从它的build议:

将Window SoftInput Mode属性设置为adjustPan和adjustResize

 <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity> 

获得该结果的唯一方法是resize布局。 使用android:windowSoftInputMode =“adjustResize”

在你的清单中试试这个:

 android:windowSoftInputMode="adjustResize|stateUnchanged" 

检查包含EditText和Button的布局是否为RelativeLayout。

尝试在您的LinearLayout使用alignParentBottom="true"属性将FrameLayout更改为RelativeLayout

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <LinearLayout android:layout_alignParentBottom="true" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </RelativeLayout> 

您将无法使用adjustPan来执行此adjustPan ,因为从官方指南

该活动的主窗口不调整为软键盘腾出空间。 相反,窗口的内容自动平移,以便当前的焦点永远不会被键盘遮挡,用户总是可以看到他们正在input的内容。 这通常不如resize,因为用户可能需要closures软键盘才能与窗口的遮蔽部分进行交互。

您的Button低于您当前的焦点EditText

通过从清单中的activity和android:windowSoftInputMode中删除下面的行,我得到了以前隐藏的整个布局滚动

this.getWindow()。setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

请检查此输出video链接: https : //mega.nz/#!TpRCWZjY!TqDzv0Yn3Q24PR1JAdH8kRVeDf2iSa1LQbNBgF0SVHk

我不相信有一个简单的方法来做到这一点。 至less不像设置一个标志那么简单。 我有一个类似的情况,希望键盘上升到低于选定的EditText的视图的水平。 我结束了使用这个答案: 如何检查Android软件键盘的可见性?

并在键盘可见时手动调整我的视图大小。

只要在活动中使用这个属性

 android:windowSoftInputMode="adjustPan"