Julia Williams
Julia Williams

Reputation: 113

Textview with constrained width not working in recyclerview sometimes

I am facing one tricky issue while using simple textview with constrainedWidth in recyclerview.

Width of textview is set to wrap content and constrained width is set to true. even if there is space in right side Textview gets ellipsed to end. This happen sometimes when scroll frequently.

enter image description here enter image description here

<?xml version="1.0" encoding="utf-8"?>
<com.chauthai.swipereveallayout.SwipeRevealLayout 
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:id="@+id/swipeRevealLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dragEdge="right"
app:mode="same_level">

<!-- Your secondary layout here -->
<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="106dp"
        android:orientation="horizontal">

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/txtEdit"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@color/colorBlue"
            android:clickable="true"
            android:focusable="true"
            android:fontFamily="@font/quicksand_bold"
            android:foreground="?selectableItemBackground"
            android:gravity="center"
            android:minWidth="80dp"
            android:paddingStart="8dp"
            android:paddingEnd="8dp"
            android:text="@string/txt_edit"
            android:textColor="@color/colorWhite"
            tools:ignore="UnusedAttribute" />

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/txtDelete"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@color/colorRedDelete"
            android:clickable="true"
            android:focusable="true"
            android:fontFamily="@font/quicksand_bold"
            android:foreground="?selectableItemBackground"
            android:gravity="center"
            android:minWidth="80dp"
            android:paddingStart="8dp"
            android:paddingEnd="8dp"
            android:text="@string/txt_delete"
            android:textColor="@color/colorWhite"
            tools:ignore="UnusedAttribute" />
    </LinearLayout>
</FrameLayout>

<!-- Your main layout here -->
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:elevation="5dp"
        app:cardCornerRadius="0dp">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorWhite">

            <androidx.cardview.widget.CardView
                android:id="@+id/cardView6"
                android:layout_width="0dp"
                android:layout_height="85dp"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                app:cardCornerRadius="6dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toStartOf="@+id/guideline"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent">

                <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/imgBanner"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:adjustViewBounds="true"
                    android:scaleType="centerCrop"
                    android:src="@drawable/ic_placeholder"
                    app:layout_constraintBottom_toBottomOf="@+id/txtOffer"
                    app:layout_constraintEnd_toStartOf="@+id/guideline"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="@+id/txtAdTitle" />
            </androidx.cardview.widget.CardView>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAdTitle"
                style="@style/AppTheme.TextStyle.Medium"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginEnd="16dp"
                android:ellipsize="end"
                android:fontFamily="@font/quicksand_semi_bold"
                android:maxLines="1"
                android:text="Ad display name"
                android:textColor="@color/colorTextTitle"
                android:textSize="14sp"
                app:layout_constraintWidth_max="wrap"
                app:layout_constrainedWidth="true"
                app:layout_constraintBottom_toTopOf="@+id/txtAdLocation"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="@+id/guideline"
                app:layout_constraintTop_toTopOf="@+id/cardView6"
                app:layout_constraintVertical_chainStyle="spread_inside" />

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAdLocation"
                style="@style/AppTheme.TextStyle.Medium"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginTop="6dp"
                android:layout_marginEnd="16dp"
                android:ellipsize="end"
                android:maxLines="2"
                android:text="Ad location"
                android:textColor="@color/colorTextTitle"
                android:textSize="10sp"
                app:layout_constrainedWidth="true"
                app:layout_constraintBottom_toTopOf="@+id/txtOffer"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toEndOf="@+id/appCompatImageView5"
                app:layout_constraintTop_toBottomOf="@+id/txtAdTitle" />

            <androidx.appcompat.widget.AppCompatImageView
                android:id="@+id/appCompatImageView5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="4dp"
                android:adjustViewBounds="true"
                android:src="@mipmap/map_pin"
                app:layout_constraintBottom_toBottomOf="@+id/txtAdLocation"
                app:layout_constraintStart_toStartOf="@+id/txtAdTitle"
                app:layout_constraintTop_toTopOf="@+id/txtAdLocation" />

            <androidx.appcompat.widget.AppCompatImageView
                android:id="@+id/imgDuplicate"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:adjustViewBounds="true"
                android:contentDescription="@string/title_duplicate_ad"
                android:foreground="?selectableItemBackground"
                android:src="@mipmap/duplicate"
                android:tooltipText="@string/title_duplicate_ad"
                android:layout_marginEnd="16dp"
                android:visibility="gone"
                app:layout_constraintBottom_toBottomOf="@+id/txtAdStatus"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toEndOf="@+id/txtAdStatus"
                app:layout_constraintTop_toTopOf="@+id/txtAdStatus"
                tools:ignore="UnusedAttribute" />

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtOffer"
                style="@style/AppTheme.TextStyle.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:background="@drawable/back_offer"
                android:paddingStart="10dp"
                android:paddingTop="2dp"
                android:paddingEnd="10dp"
                android:paddingBottom="4dp"
                android:text="@string/offer_percentage"
                android:textColor="@color/colorWhite"
                android:textSize="12sp"
                app:layout_constrainedWidth="true"
                app:layout_constraintBottom_toBottomOf="@+id/cardView6"
                app:layout_constraintEnd_toStartOf="@+id/txtAdStatus"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintHorizontal_chainStyle="packed"
                app:layout_constraintStart_toStartOf="@+id/appCompatImageView5"
                app:layout_constraintTop_toBottomOf="@+id/txtAdLocation"
                app:layout_constraintWidth_percent="1" />

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAdStatus"
                style="@style/AppTheme.TextStyle.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginBottom="8dp"
                android:background="@drawable/back_status"
                android:paddingStart="10dp"
                android:paddingTop="1dp"
                android:paddingEnd="10dp"
                android:paddingBottom="5dp"
                android:text="@string/txt_status_approved"
                android:textColor="@color/colorWhite"
                android:textSize="12sp"
                app:layout_constrainedWidth="true"
                app:layout_constraintBottom_toBottomOf="@+id/txtOffer"
                app:layout_constraintEnd_toStartOf="@+id/imgDuplicate"
                app:layout_constraintStart_toEndOf="@+id/txtOffer"
                app:layout_constraintTop_toTopOf="@+id/txtOffer"
                app:layout_constraintVertical_bias="0.0" />

            <androidx.constraintlayout.widget.Guideline
                android:id="@+id/guideline"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintGuide_percent=".35" />

        </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.cardview.widget.CardView>


</FrameLayout>

Viewholder inflation code

return new ItemHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_my_ads, parent, false));

Upvotes: 0

Views: 602

Answers (1)

Sahil Garg
Sahil Garg

Reputation: 262

Use

app:layout_constraintWidth_default="wrap"

instead of

app:layout_constraintWidth_max="wrap"

Upvotes: 1

Related Questions