折叠一个布局,但将另一个布局保留在底部

2023-12-25

我有这样的布局:

没有颜色: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(使用前将#替换为@)

折叠一个布局,但将另一个布局保留在底部 的相关文章

  • 如何解决这个 java.nio.BufferOverflowException 错误?

    当我尝试使用 ADT 在 Eclipse 中编译代码时 它向我显示了此错误 2013 12 10 17 55 51 Android SDK Warning when loading the SDK Warning Ignoring buil
  • admob 获取广告响应。错误代码:0 无法加载广告:0

    我在这里遵循了有关该错误的许多答案 但我的问题尚未解决 每次运行应用程序时 都不会出现广告 并且我在 Logcat 中收到以下错误消息 获取广告响应时出现问题 错误代码 0 无法加载广告 0 这是我的java代码 我错过了什么 privat
  • Android 版 YouTube 频道订阅

    我在我的应用程序中使用 YouTube API 用户可以使用其 Google 帐户登录 我希望用户能够订阅某些 YouTube 频道 这里似乎有一些关于网络的东西 https developers google com youtube su
  • Paypal 支付页面布局在 webview android 中损坏

    我在某些 Android 设备上遇到一个奇怪的问题 我正在 webview 上打开 PayPal 支付页面 但它的布局在某些设备上被破坏 请任何人有任何想法 请提出建议 我被困住了 该截图设备的浏览器为chrome版本34 0 1847 1
  • 如何在android中以编程方式读取我的应用程序中电子邮件附加的文件?

    我知道一种获取此处显示的电子邮件中附件名称的方法 Android 在我的应用程序中获取电子邮件附件名称 https stackoverflow com questions 6035535 android get email attachme
  • cordova:从 url 下载到 android 下载文件夹

    在开始之前 我尝试了以下堆栈溢出的答案 使用phonegap将文件下载到ios android下载文件夹 https stackoverflow com questions 21375624 download file to downloa
  • Robolectric 3.0 不适用于 AppCompat 21+

    升级到 AppCompat 21 后 我们的许多 Robolectric 测试都失败了 Toolbar 和 AppCompatDelegate 似乎存在问题 我尝试了 support v4 appcompat 22 2 1 和 appcom
  • Android 拒绝来电

    我想拒绝android中的传入 我从这些链接中看到了很多代码 Android 完全控制手机 信息亭模式 可能吗 如何 https stackoverflow com questions 7121508 android taking comp
  • 在 Android 应用程序中集成 Facebook 和 LinkedIn

    我有一个集成了 Facebook 和 LinkedIn 网络的应用程序 根据说明 为了集成 LinkedIn 我需要在我的活动中的清单中添加以下代码
  • Eclipse 说“更新 Android Developer Toolkit”

    我不知何故弄乱了我的 Eclipse 和 Android 设置 我不知道如何修复它 问题症状如下 在 首选项 gt Android 中 我尝试选择 android sdk linux 的位置 选择时出现错误 此 Android SDK 需要
  • 让每个观察者仅在订阅/观察时接收*新的LiveData

    每当你打电话时 observe 在 LiveData 上 观察者接收该 LiveData 的最后一个值 这在某些情况下可能有用 但对我来说没有用 每当我打电话 observe 我希望观察者只接收未来的 LiveData 更改 而不是它在以下
  • Android NDK 模块依赖于另一个模块

    我有一个使用 Android NDK 编写的 Android 项目 在该项目中 我使用两个预构建的共享库 GpkgSDK 和 Spatialite 并构建另外两个共享库 WFSHelpers 和 com example gpkgviewer
  • Android 背景 + 文本 + 按钮图标

    我想要一个图像设置为文本的背景 并在文本的左侧设置一个图标 在iPhone中非常简单 但不知道如何在Android上做到这一点 调整按钮的大小并保持图标 文本的位置和距离正确 iPhone 安卓我有这个 xml代码是
  • listItems之间的黑线,如何删除?

    我的列表项之间有一些水平黑线 如何删除它们 我的图形没有一部分 谢谢 listview setDivider null listview setDividerHeight 0 或在 XML 中
  • android listactivity onCheckedChangeListener

    我正在开发一款应用程序 并且我有一个ListActivity 其选择模式设置为choice mode multiple 现在我想重写方法 当一项被调用时调用该方法选中 未选中 我发现onCheckChanged 方法仅针对RadioGrou
  • 横向模式下视频视图不是全屏

    我正在使用用 xml 设计的视频视图 该视频在纵向模式下为全屏 但当切换到横向模式时 它会左对齐 并且宽度和高度都会换行 而不是全屏 我参考了这些 但仍然没有解决这个问题 全屏视频视图未居中 https stackoverflow com
  • 使用react-native使用WebView设置用户代理

    我想修改 WebView 中的用户代理字符串 以便在服务器端我可以检测到请求来自我的反应本机应用程序 我想使用 WebView 中的 source 属性来做到这一点 对于 IOS 和 Android 我该如何执行此操作 您只需将其设置为 W
  • 如何等待 Kotlin 协程完成

    我读过几十篇文章 但不知何故 没有一个答案似乎适用于我的情况 我想要实现的是在Fragment中等待ViewModel使用Room执行操作 Dao Query SELECT FROM my table WHERE id id suspend
  • 如何从下到上连续移动图像?

    我一直在研究这个例子http obviam net index php a very basic the game loop for android http obviam net index php a very basic the ga
  • 以编程方式暂时禁用自动更新

    我有一个自行车计算机应用程序 可以在用户骑行时记录数据 我有一位用户报告了一个我没有考虑到的问题 他出去进行了一次长途骑行 100 多英里 但在外出记录数据时 该应用程序通过 Google Play 自动更新进行了更新 不幸的是 这导致应用

随机推荐