Reputation: 113
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.
<?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
Reputation: 262
Use
app:layout_constraintWidth_default="wrap"
instead of
app:layout_constraintWidth_max="wrap"
Upvotes: 1