Desplazamiento horizontal automático de Android TextView

Estoy tratando de implementar una vista de texto de una sola línea que se desplazará automáticamente. Pero lamentablemente no puedo conseguir que funcione. El AutoScrollTextView se declara dentro de un LinearLayout (anchura y altura = fill_parent). La clase básicamente utiliza un manejador que se llama a desplazarse por una cantidad determinada. He simplificado el código para mostrar sólo una vista de texto que debe desplazarse en 5 píxeles cada segundo.

La salida del registro es correcta, el método getScrollX () devuelve la posición scrollX apropiada.

Si no llamo requestLayout() , nada se dibuja. invalidate() no tiene efecto.

¿Alguien tiene una pista?

 public class AutoScrollTextView extends TextView { public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setSingleLine(); setEllipsize(null); setText("Single-line text view that scrolls automatically if the text is too long to fit in the widget"); } // begin to scroll the text from the original position public void startScrolling() { scrollHandler.sendEmptyMessage(0); } private Handler scrollHandler = new Handler() { private static final int REFRESH_INTERVAL = 1000; public void handleMessage(Message msg) { scrollBy(5, 0); requestLayout(); Log.debug("Scrolled to " + getScrollX() + " px"); sendEmptyMessageDelayed(0, REFRESH_INTERVAL); } }; } 

Si no necesita subclase de TextView , puede probar esto en el archivo de diseño:

  <TextView android:text="Single-line text view that scrolls automatically if the text is too long to fit in the widget" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit ="marquee_forever" android:focusable="true" android:focusableInTouchMode="true" android:scrollHorizontally="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

Además, en su código utilice lo siguiente:

 findViewById(R.id.serviceColorCode).setSelected(true); 

[Respuesta editada basada en comentarios]

Mi solución funciona:

 <TextView android:id="@+id/titolotxt" android:layout_width="..." android:layout_height="..." android:ellipsize="marquee" android:gravity="left" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" android:text="@string/titolo"/> 

Y el TextView tiene que ser setted seleccionado: textView.setSelected(true); Por código en onCreate por ejemplo.

Después de este código xml como contestado por @rajat

 <TextView android:text="Single-line text view that scrolls automatically if the text is too long to fit in the widget" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit ="marquee_forever" android:focusable="true" android:focusableInTouchMode="true" android:scrollHorizontally="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

Necesitamos establecer

 TextView tv=(TextView)findViewById(R.id.textview1); tv.setSelected(true); 

Que finalmente hizo que mi trabajo

A veces invalidate no funcionará hasta que usted llama invalidate en el hilo principal como sigue:

 handler.post(new Runnable() { @Override public void run() { yourView.invalidate(); } }); 
 // this TextView will marquee because it is selected TextView marqueeText1 = (TextView) findViewById(R.id.marquee_text_1); marqueeText1.setSelected(true); <TextView android:id="@+id/marquee_text_1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit." android:textSize="24sp" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" /> 
  • Android - Centro de vista de texto en LinearLayout
  • Cómo configurar el fondo de un TextView dinámicamente desde un archivo Xml
  • Androide: elipsis en el texto ICS continúa después de la elipsis
  • Usando onClick en TextView con texto seleccionable - cómo evitar doble clic?
  • Android TextView habilita las etiquetas LinkiFy y Href
  • Fade out / fade en TextView basado en desplazamiento
  • Actualización de contenido de ScrollView
  • El texto (fuente) parece desvanecido en los apis más antiguos
  • ¿Cómo crear una animación cambiante de color? (Androide)
  • Cómo dar formato al texto en la cadena que se muestra en TextView
  • Forzar la siguiente palabra a una nueva línea si la palabra es demasiado larga para la vista de texto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.