Set textview fading in Android 4.0.3
Asked Answered
P

2

6

I've just tried to implement the fade effect for TextView in Android 4.0.3; however, it doesn't work.

fadingEdge="horizontal"
singleLine="true"
ellipsize="marquee"

This code works perfectly for 2.3.7 and below, but not working for 4.0.3. I'm wondering why is that so? and how to make fade effect for TextView?

My question is the same as this one: http://groups.google.com/group/android-developers/browse_thread/thread/97131b20de8b2ebd , but no answer yet.

Poucher answered 16/2, 2012 at 8:11 Comment(1)
Use setHorizontalFadingEdgeEnabled(true);Michealmicheil
P
4

It is a bit late, but that may help people who have the same question.

I have had this problem on different phones, and it could come from that :

  • on Android 4.0.x, it seems that the TextView have to be focusable, otherwise fade effect won't work. So try adding this :

    android:focusable="true" android:focusableInTouchMode="true"

  • if that does not work, you could try android:lines="1", but i think that android:singleLine="true", which is deprecated, works better

  • sometimes, you need to programmatically call setSelected(true) on the textView to get the fade effect. Please check this link : Is there a way to make ellipsize="marquee" always scroll?

Pleonasm answered 6/6, 2012 at 14:36 Comment(6)
if you set android:focusableInTouchMode then users must touch to receive the focus and the fading effect happens. however, I want it to display with fading effect normally as in GB 2.3.xPoucher
did you try the different combinations of android:focusable and android:focusableInTouchMode ? If it still does not work, I'm afraid the only solution is to programmatically call setSelected() on your textViewPleonasm
i know that if set android:focusableInTouchMode, it will work as long as user touch the TextView in order to receive focus and it will transform into fading effect. what I mean is the natural state of TextView should be like that, no touch required.Poucher
As I tested this on a Galaxy Nexus, I have had no problem with android:focusableInTouchMode="true". With touch mode activated, well, I guess you will need to try some programmatic solution from the link above.Pleonasm
To get it to work on a Nexus running Android 4.4 I needed to set ellipsize="marquee", marqueeRepeatLimit="0" and fadingEdge="horizontal" in the xml and use setSelected(true) programmatically. Without setting marqueeRepeatLimit="0" I was getting automatically scrolling text which is not what I wanted.Marmara
@ShobhitPuri I looked and I looked (through several git repos) but I can't for the life of me find this chunk of code. Sorry.Marmara
R
1

As of API level 14 fadingEdge is deprecated and ignored so in order to make fading edge work on Android 4.0.3 you must use requiresFadingEdge instead.

Rost answered 14/4, 2015 at 10:43 Comment(1)
requiresFadingEdge also not working. Any suggestion !Dulaney

© 2022 - 2024 — McMap. All rights reserved.