布局不会没有边距而居中

时间:2020-03-25 15:11:50

标签: android android-layout

我正在使用ConstraintLayout根据RecyclerView中的数据有条件地显示RecyclerView或具有TextView的图像。问题是,即使我在所有4个方向上正确放置了约束,Image和TextView也不会垂直居中。我还使用打包链样式。这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
    android:gravity="center"
    app:layout_constraintVertical_chainStyle="packed"
    tools:context=".ShortlistFragment">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/shortlistedProfilesRV"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone" />

    <me.zhanghai.android.materialprogressbar.MaterialProgressBar
        android:id="@+id/interestProgress"
        style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"
        android:layout_width="160dp"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:mpb_progressStyle="horizontal" />

    <ImageView
        android:id="@+id/shortlistBgImageView"
        android:layout_width="128dp"
        android:layout_height="121dp"
        android:contentDescription="Star image"
        android:src="@drawable/star"
        app:layout_constraintBottom_toTopOf="@id/shortlistHelperText"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_chainStyle="packed" />

    <TextView
        android:id="@+id/shortlistHelperText"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Some Text Here!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/shortlistBgImageView"
        app:layout_constraintVertical_chainStyle="packed" />

</androidx.constraintlayout.widget.ConstraintLayout>

在Android Studio预览中,图像和文本完全按预期居中。但是在实际设备中,它位于顶部(我在发短信给Android 9)。我需要将layout_marginTop赋予ImageView使其居中,但这只是做事的一种拙劣方法。我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

我实际上是在NavHostFragment内部使用此片段的,其高度设置为wrap_content。