将 'android: layout_below' 属性的值设置为来自不同布局 xml 文件的资源 id

Posted

技术标签:

【中文标题】将 \'android: layout_below\' 属性的值设置为来自不同布局 xml 文件的资源 id【英文标题】:Setting the value for 'android: layout_below' property to a resource id from a different layout xml file将 'android: layout_below' 属性的值设置为来自不同布局 xml 文件的资源 id 【发布时间】:2017-08-25 12:21:04 【问题描述】:

我有一个如下所示的蓝图:

我在 xml 中指定了 tablayout 小部件,如下所示:

<android.support.design.widget.TabLayout
    android:id="@+id/tabLayout"
    style="@style/AppTabLayout"
    android:layout_
    android:layout_
    android:layout_alignParentTop="true"
    android:background="@color/tabBg"
    android:minHeight="?attr/actionBarSize"
    app:tabTextColor="@color/grey"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

我设置了一个 ViewPager 滚动浏览每个选项卡的视图。现在在其中一个视图中 - 选项卡 3,我需要在 @id/tabLayout 下方排列我的组件

这是tab3.xml的内容:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical">

    <TextView
        android:id="@+id/secondtext"
        android:layout_
        android:layout_
        android:layout_below="@id/tabLayout"
        android:background="@android:color/white"
        android:text="second"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/thirdtext"
        android:layout_
        android:layout_
        android:layout_below="@id/secondtext"
        android:background="@android:color/white"
        android:text="third"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

第二个和第三个文本视图都显示在 tabLayout 后面,它们被 tabLayout 覆盖/隐藏。如何指定要在 tabLayout 正下方显示的文本视图,以便文本可见?

【问题讨论】:

【参考方案1】:

与任何其他布局一样,RelativeLayout 仅负责布置其直接子级。因此,android:layout_below 和类似的属性只能用于同一个 RelativeLayout 父级中的两个视图。

在这种情况下,您必须将其添加到 ViewPager。然后,TextView 可以位于其容器的顶部,因为现在位于 TabBar 下方。

如果这对您的其他标签没有好处。您可以执行以下操作之一: - 将 TabBar 设置为固定高度并将其设置为文本视图的边距 - 在运行时查询TabBar的高度并将其应用为tab3中的padding或margin。

【讨论】:

这是我正在寻找的澄清。我将采用第二个建议:在运行时获取 tabLayout 的高度,并将其作为上边距应用于 tab3 的内容,甚至可能是 tab 3 的整个相对布局。【参考方案2】:

在tab3.xml中给RelativeLayout定义一个id并使用。

【讨论】:

【参考方案3】:

使用垂直方向的线性布局..它会工作:)

【讨论】:

在 tab3.xml 和 content_main_sportsbook.xml 中? 两者都使用线性布局

以上是关于将 'android: layout_below' 属性的值设置为来自不同布局 xml 文件的资源 id的主要内容,如果未能解决你的问题,请参考以下文章

Android xml布局include中android:layout_below属性无法使用

Android xml布局include中android:layout_below属性无法使用

Android xml布局include中android:layout_below属性无法使用

layout_below在linearlayout中

Android中RelativeLayout各个属性

RelativeLayout各个属性