我有这个布局:
没有颜色:https://i.stack.imgur.com/OdSda.png
如果我单击D旁边的EditText并打开键盘,我会想要发生什么:
实际发生的情况:
我已经尝试过的两件事,但是两件事都没有按预期的那样完全起作用:
I)将android:windowSoftInputMode="adjustPan"
添加到清单:
II)将android:windowSoftInputMode="adjustResize"
添加到清单中:除非我也将android:fitsSystemWindows="true"
添加到选项卡片段的xml中,否则什么都不会改变:
答案 0 :(得分:1)
我设法找到了方法! :)非常感谢Umair向我提供ScrollView的技巧,并测试了不同的东西!
首先,这是现在构建整体布局的方式:
android:fitsSystemWindows="true"
-ScrollView似乎仍然禁用了它!)
清单:
<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"
一样)答案 1 :(得分:0)
这就是我的想法:无论我多么努力地尝试在设备/仿真器上使用键盘始终位于layout 3
的底部,我检查的设备高度从 4.7 inches min
开始< / strong>。而且,如果您将adjust:resize
放在清单文件中,它将始终在键盘顶部上显示最后一个布局。但是,如果您放置adjust:nothing
,那么即使您要在其上写一些内容,您的底部布局也不会显示。如果您将adjust:adjutPan
放进去,它将像您说的那样将您的布局推到顶部。现在进入keyboard part
:
如果要测量高度或检查键盘是否覆盖了布局,则需要测量屏幕和键盘的高度并找出差异。看一下这个问题。
How to check visibility of software keyboard in Android?
基于该结果,您可以显示或隐藏布局。
注意::如果您想按原样要求,则必须设计自定义布局。