Texto de marquesina en Android

¿Cómo puedo usar el texto de marquesina en una aplicación de Android?

Aquí hay un ejemplo:

public class TextViewMarquee extends Activity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView) this.findViewById(R.id.mywidget); tv.setSelected(true); // Set focus to the textview } } 

El archivo xml con la vista de texto:

    
 android:ellipsize="marquee" 

Esto solo funciona cuando su TextView tiene el foco.

 TextView textView = (TextView) this.findViewById(R.id.textview_marquee); textView.setEllipsize(TruncateAt.MARQUEE); textView.setText("General Information... general information... General Information"); textView.setSelected(true); textView.setSingleLine(true); 

Para que esto funcione, tuve que usar TODAS las tres cosas (ellipsize, selected, y singleLine) mencionadas anteriormente:

 TextView tv = (TextView)findViewById(R.id.someTextView); tv.setSelected(true); tv.setEllipsize(TruncateAt.MARQUEE); tv.setSingleLine(true): 

Código Xml

    

Java

 txtEventName.setSelected(true); 

si el texto es pequeño, añada espacio antes y después del texto

 txtEventName.setText("\t \t \t \t \t \t"+eventName+"\t \t \t \t \t \t"); 

Simplemente ponga estos parámetros en su TextView – Funciona: D

 android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" 

Y también necesita establecer setSelected(true) :

 my_TextView.setSelected(true); 

Saludos, Christopher

Encontré un problema con marquesina que no se puede usar para cadenas cortas (ya que su función es solo mostrar cuerdas largas).

Sugiero Usar Webview si quieres mover cadenas cortas horizontalmente. Código Main_Activity.java: `

  WebView webView; webView = (WebView)findViewById(R.id.web); String summary = "" + "Hello Droid" + ""; webView.loadData(summary, "text/html", "utf-8"); // Set focus to the textview ` 

código main_activity.xml:

  

Además de las configuraciones XML identificadas por droidgren, mis pruebas han demostrado que si el texto que desea mostrar es más corto que el ancho de la vista de texto, entonces la marquesina no se desplazará en absoluto. Las soluciones posibles son establecer el ancho de la vista a un tamaño menor que la longitud del texto, o concatenar la cadena a sí mismo 2 o 3 veces, con espacios en blanco entre los adecuados para que el desplazamiento se vea bien.

Agregue el código siguiente en XML

   

En Java, agregue el siguiente código:

  TextView txtEventName=(TextView)findViewById(R.id.txtEventName); txtEventName.setSelected(true); 

He intentado todo lo anterior, pero para mí no funcionó. Cuando agrego

 android:clickable="true" 

entonces funcionó perfectamente para mí. No sé por qué. Pero estoy feliz de trabajarlo.

Aquí está mi respuesta completa.

 android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:clickable="true" 

Use esto para configurar Marque:

  final TextView tx = (TextView) findViewById(R.id.textView1); tx.setEllipsize(TruncateAt.MARQUEE); tx.setSelected(true); tx.setSingleLine(true); tx.setText("Marquee needs only three things to make it run and these three things are mentioned above."); 

No necesita usar ” android: marqueeRepeatLimit =” marquee_forever “en el archivo xml. Marquee funcionará incluso sin esto.

En el archivo XML, debe agregar los siguientes atributos adicionales en un TextView para obtener una característica similar a una marquesina:

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

En el archivo MainActivity.java, puede obtener la referencia de este TextView utilizando findViewById () y puede establecer la siguiente propiedad en este TextView para que parezca un texto de marquesina:

 setSelected(true); 

Eso es todo lo que necesitas.

Esto será equivalente a “final”:

 where = TruncateAt.END 

Puede usar un TextView o su TextView personalizado. Lo último es cuando la vista de texto no puede enfocarse todo el tiempo.

En primer lugar, puede usar una vista de texto o una vista de texto personalizada como la vista de texto desplazable en su archivo de distribución .xml de la siguiente manera:

  

NOTA: en el fragmento de código anterior, com.example.myapplication es un nombre de paquete de ejemplo y debe ser reemplazado por su propio nombre de paquete.

Luego, en caso de utilizar CustomTextView, debe definir la clase CustomTextView:

 public class CustomTextView extends TextView { public CustomTextView(Context context) { super(context); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @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; } } 

Espero que sea útil para ti. ¡Aclamaciones!

Con la respuesta anterior, no puede establecer la velocidad ni tener flexibilidad para personalizar la funcionalidad de vista de texto. Para tener su propia velocidad de desplazamiento y flexibilidad para personalizar las propiedades de marquesina, use lo siguiente:

  

Dentro de tu actividad:

 private void setTranslation() { TranslateAnimation tanim = new TranslateAnimation( TranslateAnimation.ABSOLUTE, 1.0f * screenWidth, TranslateAnimation.ABSOLUTE, -1.0f * screenWidth, TranslateAnimation.ABSOLUTE, 0.0f, TranslateAnimation.ABSOLUTE, 0.0f); tanim.setDuration(1000);//set the duration tanim.setInterpolator(new LinearInterpolator()); tanim.setRepeatCount(Animation.INFINITE); tanim.setRepeatMode(Animation.ABSOLUTE); textView.startAnimation(tanim); }