Search code examples
androidandroid-layouttextviewellipsis

ellipsize on textview doesnt work


I want to display ellipsis if my textview length is too long. But for some reason, it doesnt seem to work. Please take a look at the image on how it looks like:

enter image description here

Here is my layout code.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView 
          android:id="@+id/txt1_trans"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textIsSelectable="true"
          android:bufferType="spannable"
          android:layout_marginLeft="10dp"
          android:singleLine="true"
          android:ellipsize="end"
          android:freezesText="true"
          android:focusable="true" 
          android:focusableInTouchMode="true"
          android:text="My Personal > Bank of America savings"
          android:textStyle="bold"
          android:textSize="18sp"
          android:layout_marginTop="5dp"
          android:textColor="#000000"/>

<TextView 
    android:layout_width="wrap_content" 
    android:id="@+id/TextView2"
    android:layout_height="wrap_content" 
    android:textSize="18sp"
    android:text="100$"
    android:textStyle="bold"
    android:layout_marginRight="20dp"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@id/txt1_trans"
    android:layout_alignBottom="@id/txt1_trans"/>

</RelativeLayout>

I want the textView on the left (txt1_trans) to display ellipsis if it takes up the space that textview on the right ("TextView2") occupies. Please let me know what I am doing wrong.

Thanks


Solution

  • I found the problem with the layout. For the 2nd TextView on my layout, I have set

    alignParentRight = true

    And the 1st TextView has

    width = "wrap_content"

    Because of this, both these TextViews end up taking up common space. In order to avoid that, I set the first TextView to_LeftOf 2nd TextView . This ensures that they dont try to write on the same common space . Here is my correct layout :

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical" android:layout_width="fill_parent"
      android:layout_height="fill_parent">
    <TextView 
          android:id="@+id/txt1_trans"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textIsSelectable="true"
          android:bufferType="spannable"
          android:layout_marginLeft="10dp"
          android:singleLine="true"
          android:ellipsize="end"
          android:layout_toLeftOf="@+id/TextView2"
          android:freezesText="true"
          android:focusable="true" 
          android:focusableInTouchMode="true"
          android:text="My Personal Bank of America savings"
          android:textStyle="bold"
          android:textSize="18sp"
          android:layout_marginTop="5dp"
          android:textColor="#000000"/>
    
       <TextView 
          android:layout_width="wrap_content" 
          android:id="@+id/TextView2"
          android:layout_height="wrap_content" 
          android:textSize="18sp"
          android:text="100$"
          android:textStyle="bold"
          android:layout_marginRight="20dp"
          android:layout_alignParentRight="true"
          android:layout_alignTop="@id/txt1_trans"
          android:layout_alignBottom="@id/txt1_trans"/>
    </RelativeLayout>