我有这个布局:
没有颜色:https://i.stack.imgur.com/OdSda.png
如果我点击D旁边的EditText并打开键盘,我想要发生什么:
实际发生了什么:
我已经尝试了两件事,但两件事并没有像预期的那样完全发挥作用:
I)将android:windowSoftInputMode="adjustPan"
添加到清单:
II)将android:windowSoftInputMode="adjustResize"
添加到清单:除非我还将android:fitsSystemWindows="true"
添加到选项卡片段的xml中,否则没有任何变化:
我找到了办法! :)非常感谢Umair向我提供了ScrollView的提示并测试了不同的东西!
首先,这就是现在整体布局的构建方式:
android:fitsSystemWindows="true"
- ScrollView似乎禁用了它!)
新的ScrollView
new RelativeLayout(ScrollView只能包含一个元素!)
RelativeLayout 2
LinearLayout A(TextView + EditText)
LinearLayout B(TextView + EditText)
LinearLayout C(TextView + EditText)
“保存”按钮
RelativeLayout 3
LinearLayout D(TextView + EditText +“OK”按钮)
RelativeLayout 4(TextView E)表现:
<activity android:name=".MainActivity"
android:windowSoftInputMode="adjustResize"
....
RelativeLayout 4的代码:
之前:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom">
<TextView
android:id="@+id/textE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/E"
android:textSize="20sp"/>
</RelativeLayout>
后:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:layout_below="@id/ScrollViewABCD"
android:gravity="bottom">
<TextView
android:id="@+id/textE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/E"
android:textSize="20sp"/>
</RelativeLayout>
我不确定是否真的需要android:layout_gravity="bottom"
(android:gravity="bottom"
将文本放在底部!)但是我没有注意到它没有任何变化。
android:layout_alignParentBottom="true"
是这里的重要部分,因为如果没有它,相对布局4将简单地位于ScrollView下方,但是这个额外的小额使得它可以占用它所能容纳的所有空间,同时仍然尽可能地将它保持在尽可能远的地方。另外,您仍然可以使用边距在ScrollView和RL 4之间创建一些空白区域(即使您只是在Android Studio的预览窗口中看到它)。
这是做什么的:
android:fitsSystemWindows="true"
一样)所以这就是我想出来的:无论我在我的设备/仿真器上尝试键盘有多么努力,总是在layout 3
I检查设备的底部,高度从4.7 inches min
开始。如果你将adjust:resize
放在清单文件中,它将始终显示键盘顶部的最后一个布局。但是如果你放adjust:nothing
,那么即使你想在它上面写东西,你的底部布局也不会出现。如果你把adjust:adjutPan
然后它会像你说的那样将你的布局推到顶部。现在来到keyboard part
:
如果你想要高度或检查你的键盘是否覆盖你的布局,那么你需要采取屏幕和键盘的高度,找出差异。看看这个问题。
How to check visibility of software keyboard in Android?
在该结果的基础上,您可以显示或隐藏您的布局。
注意:如果您想要您的要求,则必须设计自定义布局。