Hacer que el texto se desplace usando la marquesina cuando se marque el elemento

Utilizo una vista de lista verificable (he configurado: Mylistview.setChoiceMode(1)).

Dentro de cada fila tengo 2 ImageViews y 2 TextViews.

Me gustaría que cuando mi elemento esté marcado, el texto dentro de TextViews se desplace si el texto es demasiado largo. Entonces, en el XML de mi fila, asigné lo siguiente a mis dos TextViews:

android:singleLine="true" 
android:ellipsize="marquee" 
android:marqueeRepeatLimit="marquee_forever"

Desafortunadamente, esto hará que el texto se desplace solo si el elemento está enfocado y no marcado.

Entonces, la solución en la que pienso es:

1) Cree mi propia clase TextView personalizada y haga que se centre solo cuando esté marcado (¿no sé si es posible?)

2) Ponga el foco en el elemento marcado incluso si estamos en modo táctil (use SetFocusableInTouchMode)

No he logrado hacer la segunda solución y no sé qué método anular si quiero crear mi propio TextView personalizado.

¿Podría ayudarme a hacer que el texto se desplace cuando se marca el elemento? Gracias.

preguntado el 12 de junio de 12 a las 16:06

1 Respuestas

Tienes que hacer algo como seguir.

int scrollAmount = mTextView.getLayout().getLineTop(mTextView.getLineCount())
        -mTextView.getHeight();

// if there is no need to scroll, scrollAmount will be <=0
if(scrollAmount>0)
    mTextView.scrollTo(0, scrollAmount);
else
    mTextView.scrollTo(0,0);

Respondido el 12 de junio de 12 a las 16:06

Bueno, no estoy hablando del desplazamiento vertical sino de la animación de desplazamiento horizontal muy específica que android:ellipsize="marquee" obtener. encontré esto post que muestra cómo hacer que el texto se desplace siempre con un TextView personalizado. Pero no puedo adaptarlo para que se desplace solo cuando el elemento está marcado. - Jecimí

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.