25

I have strange problem with TextView, it cuts off part of the text at the end. My layout looks like

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="top|center_horizontal"
        android:gravity="top|center_horizontal"
        android:orientation="vertical" >
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="top|center_horizontal"
            android:gravity="top|center_horizontal"
            android:orientation="horizontal"
            android:layout_weight="1"
            android:layout_marginBottom="5dp">
            <Button
                android:id="@+id/btnPreviousQuestion"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/selector_arrow_left"
                android:clickable="true"
                android:visibility="gone" >
            </Button>
            <TextView
                android:id="@+id/txtQuestion"
                style="@style/question_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="top|center_horizontal"
                android:layout_weight="1"
                 />
            <Button
                android:id="@+id/btnNextQuestion"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:background="@drawable/selector_arrow_right"
                android:clickable="true" >
            </Button>
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:orientation="horizontal" >
            <WebView
                android:id="@+id/wvMultimediaQuestion"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|center_horizontal"
                android:layout_marginLeft="50dp"
                android:layout_marginRight="55dp"
                android:layout_weight="1"
                android:visibility="gone" />
        </LinearLayout>
    </LinearLayout>

and txtQuestion cuts off text when it is long enough. What is wrong, does anybody know ?

Damir
  • 54,277
  • 94
  • 246
  • 365

8 Answers8

65

Make use of these attributes

    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"

will append "..." at the end. But this will not solve problem in honeycomb tab

So for honeycomb tablet add the following atttibute also

android:singleLine="true" 

On the other hand if you require marquee effect

android:singleLine="true"
android:ellipsize="marquee" 
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true" 
android:focusable="true" 
android:focusableInTouchMode="true
MGK
  • 7,050
  • 6
  • 34
  • 41
  • Your code on the marquee effect only works for a single TextView in the layout. If you try to have multiple items scrolling then it doesn't work. How do you go about multiple TextView to have this effect? – Brandon Feb 19 '15 at 16:55
6

Yes there are some attributes you need to set, but first let us know what type of textview do you want exactly, single line or multi line?

There are some attributes you can take care of:

android:singleLine="true"  // or false
android:ellipsize="marquee"   // must check
android:lines="1"
Paresh Mayani
  • 127,700
  • 71
  • 241
  • 295
2

Set below properties in layout file. It works fine for me

android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
Namita S
  • 21
  • 3
1

If you expect differing lengths of text for your view or you're going to change the textSize of different instances of your TextView then you should use View.addOnLayoutChangeListener().

See an example here: https://stackoverflow.com/a/44069734/1402087

Community
  • 1
  • 1
mp501
  • 666
  • 8
  • 12
  • I can't see any reference to changes at runtime. If the layout doesn't change after creating the listener doesn't do much. In fact, nothing at all. – The incredible Jan Feb 20 '23 at 10:10
1

Set the layout_gravity on the TextView to fill

0

You need to set android:minLines="2"

Aliya
  • 1,168
  • 12
  • 17
0

For me it I realised I was using the layout view of a different device to the one I was testing with. When I corrected this, I could see the textlayout was way too wide so I used this setting to reign it in:

android:layout_width="330dp"
KERR
  • 1,312
  • 18
  • 13
  • Not a good example for wrapping up the text in small space. best practice must use wrap_content or match_parent. – Jack Aug 05 '21 at 03:51
0

Tried all the solutions provided here but none of these helps, finally got the solution using android:layout_width="0dp" instead of android:layout_width="fill_parent" in textview.