Android的RelativeLayout和wrap_content的高度?

2024-02-13

我正在尝试选择 ListActivity,类似于用于向启动器屏幕添加快捷方式的选择。我已经滚动了自己的页眉和页脚,我希望在屏幕上时将其“粘在”视图的顶部和底部。为了做到这一点,我使用了RelativeLayout,将标题设置为停靠在顶部,将页脚设置为停靠在底部,并将列表设置为位于标题下方和页脚上方。就活动的整体布局而言,这正如我所期望的那样呈现。页眉粘在顶部,页脚粘在底部,列表在它们之间滚动。

当我切换到relativelayout作为我的root时,发生了一件奇怪的事情。请看下面的截图:

我希望我的 Activity 的高度是wrap_content,这样表单的高度就与其中显示的内容一样高,但是一旦我切换到RelativeLayout,它似乎将 Activity 有效地呈现为fill_parent,占据整个屏幕,即使内容不保证。请注意,没有足够的列表项来填满屏幕,其中fill_parent样式,在列表末尾和页脚之间留下一堆空白。我通过样式设置我的高度 - 这与 LinearLayout 配合得很好,但现在似乎被忽略了。所以我尝试直接在RelativeLayout上对高度进行硬编码,但它仍然不起作用并且仍然呈现为fill_parent.

这是我的布局代码:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
                    style="@style/GroupsList"  
                    android:layout_height="wrap_content">

        <FrameLayout android:layout_height="wrap_content" 
                     android:layout_width="fill_parent" 
                     android:id="@+id/hdrGroups" 
                     android:layout_alignParentTop="true">
            <include layout="@layout/title" 
                     android:layout_width="fill_parent" 
                     android:layout_height="wrap_content">
            </include>
        </FrameLayout>

        <FrameLayout style="@style/MyFooter" 
                     android:layout_height="wrap_content" 
                     android:layout_width="fill_parent" 
                     android:layout_alignParentBottom="true" 
                     android:id="@+id/ftrGroups">
            <ImageView style="@style/CloseButton" 
                       android:layout_height="wrap_content" 
                       android:layout_width="wrap_content" 
                       android:src="@drawable/add" 
                       android:id="@+id/imgGroupsAdd" 
                       android:clickable="true">
            </ImageView>
        </FrameLayout>

        <ListView android:divider="#9f9f9f" 
                  android:id="@+id/android:list" 
                  android:choiceMode="singleChoice" 
                  android:dividerHeight="1dp" 
                  android:layout_height="wrap_content" 
                  android:layout_width="fill_parent" 
                  android:layout_below="@id/hdrGroups" 
                  android:layout_above="@id/ftrGroups">
        </ListView>

        <TextView android:text="@string/browser_no_groups" 
                  style="@style/ListedItemB" 
                  android:id="@+id/android:empty" 
                  android:layout_height="wrap_content" 
                  android:layout_above="@id/ftrGroups" 
                  android:layout_below="@id/hdrGroups" 
                  android:layout_width="fill_parent">
        </TextView>
    </RelativeLayout>

所有布局都是通过 XML 完成的,...我没有在代码中进行任何布局。 如何获得粘性页眉和页脚,同时让活动作为一个整体表现在wrap_content模式的高度?除了相对布局之外,我还有其他方法可以解决这个问题吗?


根据开发人员文档,相对布局不可能实现您想要的行为;

“请注意,大小之间不能存在循环依赖关系 relativelayout 及其子级的位置。例如,你 不能有高度设置为 WRAP_CONTENT 的relativelayout 和 子项设置为 ALIGN_PARENT_BOTTOM。”

相对布局 http://developer.android.com/reference/android/widget/RelativeLayout.html

为了解决您的问题,您可以尝试使用线性布局,设置为wrap_content并通过代码将最大高度设置为屏幕高度。

您可以按照此处所述获取屏幕高度:获取屏幕高度 https://stackoverflow.com/questions/4743116/get-screen-width-and-height

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android的RelativeLayout和wrap_content的高度? 的相关文章

随机推荐

  • 为什么 UIButton 框架被 setTitle: forState: 方法重置

    问题如下 在某个时刻 按钮的位置发生了变化 此后 按钮的标题也必须更改 位置通过动画 UIView 动画块 更改 并且当设置标题时 帧返回到原始值 动画之前 那么 我该如何解决这个问题 为什么会发生这种情况 用代码更新 CGRect but
  • 如果客户端禁用了 Javascript,我该怎么办?

    我的网站严重依赖 Javascript 如果我将其关闭 我的网站就会看起来非常丑陋 我想通过向用户显示打开它的通知来强制用户使用 Javascript 否则提示他该网站无法查看 我该怎么做才能实现这一目标 看看这里 无脚本标签 http w
  • Android 设备可以同时在外围模式和中央模式下运行蓝牙 LE 吗?

    是否可以在运行外设和中央模式的 Android 设备中安装 LE 蓝牙 同时用于广告和收听 是的 您绝对可以作为外设并同时连接其他外设 对此的限制之一是设备限制 请下载BLE 中央 外设检查器请确保您的设备支持 BLE 外设 BLE 中央或
  • WinAPI:如何在自定义编辑控件中处理键盘输入

    因此 我使用 Windows API 在 C 中创建自己的编辑控件 多行文本框 一切进展顺利 但我对一件事有点困惑 首先 该控件被构建为能够处理 unicode 并且所有输入都将转换为 unicode 换句话说 所有输入都将存储为wchar
  • 如何在JavaEE中响应后执行代码

    我尝试找到一种在响应后运行代码的方法 但没有成功 就我而言 服务器向我发送数据以便让我完成工作 但此操作可能会很长 例如 向 5000 个联系人发送短信并检查谁收到了它 服务器期望立即收到 HTTP 204 No Content 响应 以确
  • 在 if/else 中使用 Promise

    我有一个条件语句 其中我需要执行两个操作之一 然后在任一操作解决后继续 所以我的代码目前如下所示 if shoud do thing a should do thing a is just a variable that determine
  • 从 Arraylist 中获取恰好出现 3 次的字符串

    我有一个ArrayList其中包含一些重复的值和出现三次的元素 我想将那些出现三次的值专门收集到另一个中ArrayList like Arraylist
  • 如何通过递减来拉伸 numpy 数组的特定项?

    给定边界值k 有没有一种矢量化的方式来替换每个数字n连续递减的数字从n 1 to k 例如 如果k是 0 我想更换np array 3 4 2 2 1 3 1 with np array 2 1 0 3 2 1 0 1 0 1 0 0 2
  • WTForms 不验证 - 没有错误

    我在使用 WTForms 库时遇到了一个奇怪的问题 为了进行测试 我创建了一个包含单个字段的表单 class ArticleForm Form content TextField Content 它接收一个简单的字符串作为内容 现在我使用f
  • 如何找出应用程序崩溃的原因 - Windows 10 LTSB

    我有使用 VS 2017 15 7 4 构建的应用程序 它是 64 位命令行 C 应用程序 我已将其与所有依赖项 DLL 一起复制到使用 Windows 10 Enterprise 2016 LTSB 64 位 版本为版本 10 0 143
  • @Published 属性包装器不适用于 ObservableObject 的子类

    我有一个符合 ObservableObject 协议的类 并使用它自己的变量和 Published 属性包装器创建了一个子类来管理状态 使用子类时 published 属性包装器似乎被忽略 有谁知道这是否是预期行为以及是否有解决方法 我正在
  • 确保列表中的所有字典都具有相同的键

    我有一个包含字典的列表 例如 x 42 x 23 y 5 并希望确保所有字典具有相同的键 其值为None如果原始字典中不存在该密钥 所以上面的列表应该变成 x 42 y None x 23 y 5 最美丽 最Python式的方法是什么 目前
  • flutter firebase querysnapshot:dart 代码中不区分大小写的方法

    我是连接了 firebase 的 flutter 用户 当用户调用搜索功能然后提交字符串时 我尝试使用 querysnapshot 调用云 Firestore 中的用户列表 我尝试过的代码片段如下 Future
  • Android 触摸时旋转图像

    我正在编写一段代码 它使用 onTouchListener 缩放图像 缩放图像并移动 现在我想使用触摸旋转图像 以下是我的代码 Override public boolean onTouch View v MotionEvent rawEv
  • 没有路线匹配 {:action=>"show", :controller=>"schools"} 缺少必需的键:[:id]

    我不知道为什么我无法为项目中的每所学校创建信息链接 这是完整的错误 缺少与 action gt show controller gt schools 匹配的路线 必需的键 id 这是我的index html erb br school co
  • 是否可以从 Google Play 下载我的应用程序的旧 APK?

    在过去的几个月里 我发布了我的应用程序的几个修订版 不幸的是 我没有保留所有旧APK的副本 现在我想测试从旧版本升级到新版本 有什么方法可以下载我的旧版本的 Google 副本吗 Google Play 开发者控制台显示了我的旧 APK 但
  • 如何解决 ASP.NET、VB.NET 中的会话问题?

    如何解决 ASP NET VB NET 中的会话问题 有以下要求 当授权用户登录系统时 不允许该用户从其他计算机或除该用户当前使用权以外的浏览器登录 我们采用的补救措施是 我们将 Is Loggedin 作为数据类型为 bit 的列保留在
  • 在 Android Studio 中或在您的系统上找不到已安装的 Gradle 版本来安装 gradle 包装器

    我在安装最新的 android studio 3 5 1 后安装了 android studio 3 5 1 同时尝试运行我的 CORDOVA android 应用程序 出现以下错误 Checking Java JDK and Androi
  • 流音频运行 underlock

    我正在尝试使用在锁定屏幕下播放流音频PhoneApplicationService Current ApplicationIdleDetectionMode IdleDetectionMode Disabled 使用简单的 mp3 文件一切
  • Android的RelativeLayout和wrap_content的高度?

    我正在尝试选择 ListActivity 类似于用于向启动器屏幕添加快捷方式的选择 我已经滚动了自己的页眉和页脚 我希望在屏幕上时将其 粘在 视图的顶部和底部 为了做到这一点 我使用了RelativeLayout 将标题设置为停靠在顶部 将