Android 在主活动选项卡顶部拉伸片段约束布局

Android 在主活动选项卡顶部拉伸片段约束布局,android,constraints,android-tabs,android-constraintlayout,Android,Constraints,Android Tabs,Android Constraintlayout,我构建了一个带有约束布局的片段,其中包含一个列表视图、一个空视图和一个总计数视图。底部约束正在起作用(尽管有人工调整),但顶部与myMainActivity中的选项卡重叠: 我的代码在这里,这是我第一次使用约束布局: { <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="htt

我构建了一个带有约束布局的片段,其中包含一个
列表视图
、一个空视图和一个总计数视图。底部约束正在起作用(尽管有人工调整),但顶部与my
MainActivity
中的选项卡重叠:

我的代码在这里,这是我第一次使用约束布局:

{ 
 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">



    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toTopOf="@id/total_items_view"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.98"
        tools:layout_editor_absoluteX="8dp" />

    <TextView
        android:id="@+id/total_items_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/colorOrange"
        android:padding="4dp"
        android:text="Items in this category: "
        android:textSize="28sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintRight_toLeftOf="@id/items_number_view"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/items_number_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/colorOrange"
        android:padding="4dp"
        android:text="44"
        android:textSize="28sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintLeft_toRightOf="@id/total_items_view" />


    <RelativeLayout
        android:id="@+id/empty_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:visibility="gone">

        <ImageView
            android:id="@+id/empty_book_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:src="@drawable/orange_orange_book" />

        <TextView
            android:id="@+id/empty_title_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/empty_book_image"
            android:layout_centerHorizontal="true"
            android:fontFamily="sans-serif-medium"
            android:paddingTop="16dp"
            android:text="This category is still empty..."
            android:textAppearance="?android:textAppearanceMedium" />

        <TextView
            android:id="@+id/empty_subtitle_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/empty_title_text"
            android:layout_centerHorizontal="true"
            android:fontFamily="sans-serif"
            android:paddingTop="8dp"
            android:text="Let's start with adding books!"
            android:textAppearance="?android:textAppearanceSmall"
            android:textColor="#A2AAB0" />
    </RelativeLayout>


</android.support.constraint.ConstraintLayout> 
}
{
}
有没有办法在单独的(主)活动中为视图设置约束?我怎样才能解决这个问题

我已经尝试了
包装内容
,我唯一能想到的就是手动将其设置在顶部,这会破坏约束布局的概念


谢谢。

您不能在约束布局之外应用约束。问题在于父布局,您的视图寻呼机似乎与选项卡布局重叠。

首先,不要在ConstraintLayout中使用
match\u parent
,例如,如果要使视图与屏幕宽度匹配,请使用

android:layout_width="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
它重叠的原因在于,您可能不会将列表(或列表容器)的顶部限制为该顶部视图的底部,如

app:layout_constraintTop_toBottomOf="@+id/top_view"

您的
列表视图的
高度设置为
wrap\u content
,在这种情况下,它将根据需要展开,并与其他视图重叠。如果您想使用
包装内容
并同时强制执行视图的约束,则需要将
app:layout\u constrained height=“true”
属性添加到您的
列表视图

,这是真的!约束布局与此无关-这是ViewPager和TabsLayout布局的一个愚蠢错误。ConstraintLayout看起来确实很震撼:d问题不在ConstraintLayout范围内:ViewPager和TableLayout被混淆了。