Constraint layout constraint dimension ratio not working with multiple views

Viewed 475

I am having issue with constraint dimension ratio. Width and height of image view is not adjusting. I want to make image thumb view square depending on the ratio. I want the width and height of image thumb equal to total height of three text views given in the layout. Also current code is not loading image into image view.

Image of Layout

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/constraintAList"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">

    <com.google.android.material.imageview.ShapeableImageView
        android:id="@+id/audioThumb"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:background="@drawable/ic_headset"
        android:scaleType="centerCrop"
        app:layout_constraintDimensionRatio="1:1"
        app:layout_constraintBottom_toBottomOf="@id/audioDetail"
        app:layout_constraintEnd_toStartOf="@id/audioName"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@id/audioName"
        app:shapeAppearanceOverlay="@style/roundImageView" />     

    <TextView
        android:id="@+id/audioName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:includeFontPadding="false"
        android:maxLines="2"
        android:lines="2"
        android:padding="0dp"
        android:text="audioName"
        app:layout_constraintBottom_toTopOf="@+id/audioTime"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/audioThumb"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_chainStyle="packed" />

    <TextView
        android:id="@+id/audioTime"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:gravity="top|start"
        android:includeFontPadding="false"
        android:padding="0dp"
        android:singleLine="true"
        android:text="audioDate"
        android:textAlignment="textStart"
        app:layout_constraintBottom_toTopOf="@id/audioDetail"
        app:layout_constraintEnd_toEndOf="@id/audioName"
        app:layout_constraintStart_toStartOf="@id/audioName"
        app:layout_constraintTop_toBottomOf="@+id/audioName" />

    <TextView
        android:id="@+id/audioDetail"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:gravity="top|start"
        android:includeFontPadding="false"
        android:padding="0dp"
        android:singleLine="true"
        android:text="audioDuration"
        android:textAlignment="textStart"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@id/audioTime"
        app:layout_constraintStart_toStartOf="@id/audioTime"
        app:layout_constraintTop_toBottomOf="@+id/audioTime" />

</androidx.constraintlayout.widget.ConstraintLayout>
1 Answers

For the ImageView

  • set android:layout_height="0dp" and
  • remove app:layout_constraintEnd_toStartOf="@id/audioName"
Related