2011-10-23 8 views
11

Soy muy nuevo en la programación de Android, y he leído en todas partes y parece que no puedo encontrar ninguna solución.¿Es posible TextView Marquee en un widget que extiende AppWidgetProvider?

El problema básico es que tengo un TextView en un widget y me gustaría que el texto se desplace cuando el texto sea más largo que el TextView layout_width. Este es mi código en el layout_widget.xml

<TextView android:id="@+id/fact" android:layout_width="200dp" 
      android:text="Loading... More text to see if it spans or not and want more" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
      android:marqueeRepeatLimit ="marquee_forever" 
      android:scrollHorizontally="true" 
      android:focusable="true" 
      android:focusableInTouchMode="true" /> 

Ahora he leído que tengo que hacer el TextView para estar en el foco, lo que he hecho. También he leído que necesita establecer la propiedad setSelected (true), y aquí es donde estoy luchando para establecer. En mi actividad predeterminada (en AndroidManifest.xml) tengo este código siguiente.

  @Override 
      public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.widget_layout); 
       findViewById(R.id.fact).setSelected(true); 
       setContentView(R.layout.main); 
      } 

La parte de abajo se utiliza para ajustar el contenido a la widget_layout.xml y luego establecer la propiedad Vista de Texto para setSelected a cierto

   setContentView(R.layout.widget_layout); 
       findViewById(R.id.fact).setSelected(true); 

luego regrese de nuevo a la ContentView Main.xml

Ahora supongo que esto está mal y esta no es la forma en que debería hacerse. Pero me pregunto si se puede hacer. También leí que si puede anular el Marco, puede poner sus propias propiedades, por ejemplo, ScrollView, ¿es esto correcto también? También estoy en SDK Versión 7.

Agradezco mucho la ayuda que recibo, ¡gracias a todos!

Editar: Al eliminar setContentView (R.layout.main); al iniciar la aplicación a través del sorteo de la aplicación, el texto se desplaza, pero el widget no. Tipo de me lleva a que un widget no puede tener una marquesina ??? ¿Alguien tiene una marquesina trabajando en un widget?

Edit2: Resuelto. Así es como se hace

En el xml para la vista de texto debe tener una etiqueta Esto básicamente creo que es lo mismo que getSeleted (verdadero);

Así que el código debe ser como sigue:

<TextView android:id="@+id/fact" android:layout_width="200dp" 
      android:text="Loading... More text to see if it spans or not and want more" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
      android:marqueeRepeatLimit ="marquee_forever" 
      android:scrollHorizontally="true" 
      android:focusable="true" 
      android:focusableInTouchMode="true" 
      android:duplicateParentState="true"> 
     <requestFocus android:focusable="true" android:focusableInTouchMode="true" 
      android:duplicateParentState="true" /> 
    </TextView> 
+0

Bienvenido al desbordamiento de la pila! Recuerde aceptar una respuesta si uno resuelve su problema. –

+0

aplausos pero la solución no funciona – Springy

+0

¿esto realmente funciona para usted? porque no puedo hacer que funcione ... – Paul

Respuesta

27

Resuelto.Así es como se hace

En el xml para la vista de texto debe tener una etiqueta Esto básicamente creo que es lo mismo que getSeleted (verdadero);

Así que el código debe ser como sigue:

<TextView android:id="@+id/fact" android:layout_width="200dp" 
     android:text="Loading... More text to see if it spans or not and want more" 
     android:singleLine="true" 
     android:ellipsize="marquee" 
     android:marqueeRepeatLimit ="marquee_forever" 
     android:scrollHorizontally="true" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:duplicateParentState="true"> 
    <requestFocus android:focusable="true" android:focusableInTouchMode="true" 
     android:duplicateParentState="true" /> 
</TextView> 
+0

Gracias por compartir Gran información – Diljeet

+0

¡Esto funciona genial! Sin embargo, rompe mi evento click, tengo mi textview superposición de un ImageView dentro de RelativeLayout. ¿Alguna idea de como resolver esto? –

+0

No estoy seguro, tal vez tenga que limitar las dimensiones. – Springy

0

que está llamando setContentView dos veces:

setContentView(R.layout.widget_layout); 
findViewById(R.id.fact).setSelected(true); 
setContentView(R.layout.main); 

Su actividad sólo puede tener un diseño. Si widget_layout es el diseño de su widget que incluye la vista de texto, entonces no desea el segundo setContentView.

+0

Sí, lo sé. Por lo que entiendo (y probablemente sea incorrecto, diría), al hacer clic en la aplicación en el sorteo de la aplicación, se abre la Actividad que está vinculada a AndroidManifest. Ahora en esta actividad quiero que use main.xml. El problema que tengo es que necesito usar una clase Activity donde se llama a onCreate() donde está mirando el contenido de layout_widget.xml. Es por eso que llamé primero a layout_widget para poder establecer la propiedad de layout_widget y luego revertirla al contenido. Sé que no suena bien, pero no sé cómo hacerlo de otra manera ... – Springy

+0

Hola, resolví el problema. Destino. Editando en la publicación anterior sobre cómo se puede lograr esto. – Springy

1

enter image description here

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<TextView 
    android:id="@+id/textview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:ellipsize="marquee" 
    android:fadingEdge="horizontal" 
    android:lines="1" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:singleLine="true" 
    android:text="***************Android Dhina Marquee effect in textview ***************************** " 
    android:textColor="#9bebe4" /> 

para más referencia clic aquí http://androiddhina.blogspot.in/2015/10/marquee-effect-in-android-textview.html

Cuestiones relacionadas