tutorial textedit studio example etiqueta and android textview arabic scrollable

textedit - textview and button android example



TextView desplazable horizontalmente muestra un comportamiento incoherente en las versiones de Android (3)

Tengo una vista de texto que tiene un solo texto árabe alineado (de derecha a izquierda). El contenido del texto aumenta por tiempo, y la última parte (la más a la izquierda) siempre debe aparecer. La barra de desplazamiento horizontal se establece inicialmente a la derecha, y se desplaza automáticamente a la izquierda a medida que aumenta el texto.

El siguiente código funciona muy bien en un teléfono con Android 2.3. Esto viene del layout.xml

<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="none" android:fadingEdge="horizontal" android:gravity="right" android:scrollHorizontally="true" android:scrollbars="horizontal" android:singleLine="true" android:text="@string/txt_start" android:textAppearance="?android:attr/textAppearanceLarge" />

Tengo esto en el método onCreate () de mi Actividad

tv = (TextView) findViewById(R.id.textView1); tv.setMovementMethod(new ScrollingMovementMethod());

El problema es el comportamiento inconsistente de la vista de texto en los teléfonos que tienen Android 4.0+. ¡La barra de desplazamiento horizontal inicialmente no se coloca a la derecha, por lo que TextView está inicialmente en blanco! Si trato de desplazar el textView en blanco, aparece el texto. Cuando se agrega texto adicional, la barra de desplazamiento no se desplaza para mostrar el texto nuevo, pero si lo desplazo manualmente, aparece.

Busqué stackoverflow e intenté agregar las siguientes propiedades sin éxito.

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


Prueba este ejemplo, debería funcionar:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/myText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/myscroll" android:ellipsize="marquee" android:singleLine="true" android:scrollHorizontally="true" android:marqueeRepeatLimit="10" > </LinearLayout>

Nota : cuando pruebe la marquesina, no la pruebe en la vista de diseño dentro de Eclipse, pruébela en el emulador / dispositivo.

Además, si desea agregar un efecto de desplazamiento en el código:

TextView tView = (TextView) findViewById(R.id.myText); tView.stSelected(true);

Para que la marquesina se desplace sin detenerse al final de la marquesina:

android:marqueeRepeatLimit=”marquee_forever”


Se ha descubierto que la gravedad Izquierda / Derecha está en desuso, un desarrollador debe usar Inicio / Fin. Para que el texto se desplace necesita un "wrap_content" establecido en su ancho, adicionalmente el textDirection debe establecerse en RTL. Por razones desconocidas, textDirection no funcionaba programáticamente, pero funcionaba en el xml.

Este código funciona bien en todas las versiones de API de Android.

<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="end" android:textDirection="rtl" android:scrollHorizontally="true" android:scrollbars="horizontal" android:singleLine="true" android:ellipsize="none" android:text="@string/txt_start" android:textAppearance="?android:attr/textAppearanceLarge" />


Ninguna de esas soluciones funcionó en mi caso en el que quise animar el desplazamiento de TextView con android:gravity="right" . Sin embargo, una solución simple que ayudó fue mantener la gravedad de TextView a la izquierda, pero colocarlo alineado a la derecha dentro de un contenedor RelativeLayout:

<RelativeLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <AutoScrollingTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:gravity="left" android:singleLine="true" android:ellipsize="none"> </RelativeLayout>