我有这样的布局:
没有颜色:https://i.stack.imgur.com/OdSda.png https://i.stack.imgur.com/OdSda.png
- 选项卡的布局(单独的 xml 文件)
- relativelayout 1 围绕其他一切
- A、B、C在RelativeLayout中都有自己的LinearLayout 2
- 水平线、D(在 LinearLayout 中)和“确定”按钮有自己的relativelayout 3
- E 有相对布局 4(=页脚)
What I want如果我单击 D 旁边的 EditText 并且键盘打开,则会发生以下情况:
- 4 留在底部并隐藏在键盘后面
- 如果没有足够的空间来完全显示 3,则 2 会折叠起来,直到再次关闭键盘
实际上是什么正在发生:
- 2 留在原地
- 键盘半遮住3,看不清正在输入的内容
- 4被推起并覆盖D
有两件事我已经tried但两者都没有完全按预期工作:
I) Add android:windowSoftInputMode="adjustPan"
到清单:
- 4 仍然处于底部但是
- 其他所有东西都向上推,因此 2、3 和选项卡被覆盖一半
II) Add android:windowSoftInputMode="adjustResize"
清单:没有任何改变,除非我还添加android:fitsSystemWindows="true"
到选项卡片段的 xml:
- 现在周围的RelativeLayout 1的所有填充都被忽略
- D 旁边的 EditText 被推到 2 但不可读并且 D 和“确定”按钮被键盘覆盖
- 4仍然被推高
我设法找到了方法! :) 非常感谢 Umair 给我有关 ScrollView 的提示并测试了不同的东西!
首先,现在的整体布局是这样构建的:
- Surrounding RelativeLayout 1 (nothing special, no
android:fitsSystemWindows="true"
- the ScrollView seems to disable that anyway!)
- new ScrollView
- new RelativeLayout (ScrollView can only contain a single element!)
- RelativeLayout 2
- LinearLayout A(文本视图+编辑文本)
- LinearLayout B(文本视图+编辑文本)
- LinearLayout C(文本视图+编辑文本)
- “保存”按钮
- RelativeLayout 3
- LinearLayout D(TextView + EditText +“确定”按钮)
- 相对布局 4 (TextView E)
显现:
<activity android:name=".MainActivity"
android:windowSoftInputMode="adjustResize"
....
相对布局 4 的代码:
Before:
<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>
After:
<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 的预览窗口中看到它)。
这是做什么的:
- 滚动视图可以使用
- 键盘始终位于 ScrollView 下方
- 如果没有足够的空间来显示 ScrollView 和键盘,则前者变为可滚动
- relativeLayout 4 始终隐藏在键盘后面
- 选项卡保留在原来的位置
- relativeLayout 1 的填充不会被忽略(就像使用
android:fitsSystemWindows="true"
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)