I need to align an imageView to end of textView, both are constraint on end to a checkbox. The problem with my code is imageView always appears on the start of Checkbox and not where text in textView ends. Can anyone help
<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="0dp"
android:layout_height="wrap_content"
android:background="@color/white">
<TextView
android:id="@+id/tvMerchantTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/margin4"
android:layout_marginEnd="@dimen/margin8"
android:layout_marginStart="@dimen/margin16"
android:drawablePadding="@dimen/padding4"
android:ellipsize="middle"
android:maxWidth="@dimen/width200"
android:singleLine="true"
android:textSize="@dimen/textSize12"
app:layout_constraintBottom_toTopOf="@id/tvMerchantSubtitle"
app:layout_constraintEnd_toStartOf="@id/cbMerchantSelect"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/ivMerchantLogo"
app:layout_constraintTop_toTopOf="@id/ivMerchantLogo" />
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/cbMerchantSelect"
android:layout_width="@dimen/width16"
android:layout_height="@dimen/height16"
android:layout_marginEnd="@dimen/margin16"
android:button="@drawable/ic_round_checkbox"
android:clickable="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
I am using glide to set image to textView end drawable -
Glide.with(this)
.load(url)
.into(object : CustomTarget<Drawable?>(
DisplayUtils.dpToPx(this.context, R.dimen.width30),
DisplayUtils.dpToPx(this.context, R.dimen.height20)
) {
override fun onLoadCleared(@Nullable placeholder: Drawable?) {}
override fun onResourceReady(
resource: Drawable,
transition: com.bumptech.glide.request.transition.Transition<in Drawable?>?
) {
mBinding.inPaymentMethod.tvMerchantTitle.setCompoundDrawablesWithIntrinsicBounds(
null,
null,
resource,
null
)
}
})
Add app:layout_constraintStart_toEndOf="@+id/tvMerchantTitle"
to your ImageView
Example Code:
<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="wrap_content"
android:background="@color/white">
<TextView
android:id="@+id/tvMerchantTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="16dp"
android:drawablePadding="4dp"
android:ellipsize="middle"
android:maxWidth="200dp"
android:singleLine="true"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/ivMerchantLogo"
app:layout_constraintBottom_toBottomOf="@+id/ivMerchantLogo"
android:text="@string/app_name"/>
<ImageView
android:id="@+id/ivMerchantLogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toEndOf="@+id/tvMerchantTitle"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/cbMerchantSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:clickable="false"
android:gravity="end"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/ivMerchantLogo"
app:layout_constraintBottom_toBottomOf="@+id/ivMerchantLogo" />
</androidx.constraintlayout.widget.ConstraintLayout>
Output for above code is like: