gpt4 book ai didi

android - 折叠布局但将另一个布局放在底部

转载 作者:行者123 更新时间:2023-11-29 01:01:17 24 4
gpt4 key购买 nike

我有这样的布局:

enter image description here

没有颜色:/image/OdSda.png

  • 选项卡的布局(单独的 xml 文件)
  • RelativeLayout 1 围绕其他一切
  • A、B、C在RelativeLayout 2中都有自己的LinearLayout
  • 水平线、D(在 LinearLayout 中)和“确定”按钮有自己的 RelativeLayout 3
  • E 有 RelativeLayout 4 (=footer)

如果我点击 D 旁边的 EditText 并且键盘打开,我希望发生什么:

  • 4留在底部,隐藏在键盘后面
  • 如果没有足够的空间来完全显示 3,则折叠 2 直到再次关闭键盘

实际上发生了什么:

  • 2 留在原地
  • 键盘盖住 3 一半,我看不到我在输入什么
  • 4被推上去盖住D

有两件事我已经尝试但都没有按预期完全工作:

I) 将 android:windowSoftInputMode="adjustPan" 添加到 list 中:

  • 4 留在底部但是
  • 其他所有东西都被推上去,所以 2、3 和然后被覆盖一半的选项卡

II) 将 android:windowSoftInputMode="adjustResize" 添加到 list 中:除非我还将 android:fitsSystemWindows="true" 添加到选项卡 fragment 的 xml 中,否则什么都不会改变:

  • 现在周围 RelativeLayout 1 的所有 padding 都被忽略了
  • D 旁边的 EditText 被推到 2 但不可读,D 和“确定”按钮被键盘覆盖
  • 4还是被推上去

最佳答案

我设法找到了一个方法! :) 非常感谢 Umair 为我提供了有关 ScrollView 的提示并测试了不同的东西!

首先,现在整体布局是这样搭建的:

  • 周围的 RelativeLayout 1(没什么特别的,没有 android:fitsSystemWindows="true" - ScrollView 似乎无论如何都禁用它!)
    • 新的 ScrollView
      • new RelativeLayout(ScrollView 只能包含一个元素!)
        • 相对布局 2
          • 线性布局 A(TextView + EditText)
          • 线性布局 B(TextView + EditText)
          • LinearLayout C (TextView + EditText)
          • “保存”按钮
        • 相对布局 3
          • LinearLayout D(TextView + EditText +“确定”按钮)
    • 相对布局 4( TextView E)

list :

<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" 是这里的重要部分,因为如果没有它,Relative Layout 4 将位于 ScrollView 下方,但这个额外的小部分会耗尽所有空间,而仍然保持它尽可能向南。此外,您仍然可以使用边距在 ScrollView 和 RL 4 之间创建一些空白空间(即使您只会在 Android Studio 的预览窗口中看到它)。

这是做什么的:

  • ScrollView 可用
  • 键盘始终在 ScrollView 下方
  • 如果没有足够的空间来显示 ScrollView 和键盘,则前者变为可滚动
  • RelativeLayout 4 总是隐藏在键盘后面
  • 标签留在原处
  • RelativeLayout 1 的填充不会被忽略(就像 android:fitsSystemWindows="true" 一样)

关于android - 折叠布局但将另一个布局放在底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50966789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com