tutorial textedit studio example etiqueta and android textview marquee

textedit - Android TextView SetText() detiene la marquesina de otra TextView-¿solución alternativa?



textview and button android example (6)

Actualmente estoy jugando con la característica de marquesina de Textview de Android. Pero hay un problema: tengo un diseño que contiene algunos TextView. En uno de ellos, que muestra un título de un archivo de música, quiero aplicar la función marquesina. En otro, sigo actualizando el tiempo actual de la pista (cada segundo).

El problema es que, cada vez que se actualiza el TextView que muestra el tiempo de la pista (setText ()), se detiene la marquesina del otro TextView. Supongo que esto se debe a que setTExt () mueve el foco al TextView para el que aplicaré el texto.

¿Existe alguna solucion para esto?

Usé una clase personalizada para la marquesina TextView de este tutorial

¿Existe la posibilidad (tal vez una clase personalizada también) de que el otro TextView no "robe" el foco?

¡Gracias!

Saludos


Marquee está habilitado cuando TextView está configurado como habilitado (verdadero) o recibe foco. Use setEnabled (true) para asegurarse de que otros TextViews no detengan su marquesina cuando se mueve el foco.


Simplemente puede solicitarFocus (); de nuevo en el TextView que desea marcar después de que la nueva música TextView se haya actualizado. Si no puede lograr esto, publique un código y nosotros podemos ayudarlo.

TextView.requestFocus ()


Pero hay un problema: tengo un diseño que contiene algunos TextView. Encontré la solución aquí: http://androidbears.stellarpc.net/?p=185

Debe extender la clase TextView y anular varios métodos

@Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if(focused) super.onFocusChanged(focused, direction, previouslyFocusedRect); } @Override public void onWindowFocusChanged(boolean focused) { if(focused) super.onWindowFocusChanged(focused); } @Override public boolean isFocused() { return true; }


En mi caso, setEnabled(true) no ha sanado. Ni solicitando enfoque, ni nada por el estilo, porque no ha sido un problema con el enfoque. Creo que marquee también se reinicia cada vez que TextView pasa a través de onLayout() .

En mi caso, el TextView estaba dentro de un LinearLayout que tenía layout_height="wrap_content" . El TextView que muestra el tiempo de la pista estaba debajo del TextView con marquesina. Ahora, cuando cada segundo estaba actualizando el TextView inferior, creo que el sistema operativo calculó su altura desde cero y también calculé la altura de todo el LinearLayout en función de la altura de TextView (que, por supuesto, siempre fue el mismo). R: Es por eso que todo LinearLayout (y sus hijos) estaba recibiendo onLayout() que reinició la marquesina.

Para resumir, establecí la altura de mi contenedor LinearLayout en un valor fijo y la marquesina comenzó a funcionar.


Simplemente puede ajustar la marquesina TextView con LinearLayout


Ver mi respuesta aquí: https://.com/a/13841982/1823503

La idea es:

  • para arreglar el ancho y la altura programáticamente
  • para establecer Seleccionado
  • Para anular su TextView para corregir los problemas de enfoque