2010-12-02 14 views
3

Je veux mettre un textView dans l'écran d'accueil, et j'ai besoin de l'effet chapiteautextView chapiteau

public class MainWidget extends AppWidgetProvider { 
int a; 
RemoteViews remoteViews; 
AppWidgetManager appWidgetManager; 
ComponentName thisWidget; 

String[] s={"woddfdfdfdfdfdffffffffffffffffffffffffffffffff","dd","ddd","ffff"}; 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
     int[] appWidgetIds) { 
     Timer timer = new Timer(); 
     timer.scheduleAtFixedRate(new WlanTimer(context, appWidgetManager), 100, 50000); 
} 

private class WlanTimer extends TimerTask { 
     RemoteViews remoteViews; 
     AppWidgetManager appWidgetManager; 
     ComponentName thisWidget; 

public WlanTimer(Context context, AppWidgetManager appWidgetManager) { 

     this.appWidgetManager = appWidgetManager; 
     remoteViews = new RemoteViews(context.getPackageName(), R.layout.marketwidget_main); 
     thisWidget = new ComponentName(context, MainWidget.class); 
} 

@Override 
public void run() { 
a=(int) (Math.random()*3);        
     remoteViews.setTextViewText(R.id.TextView_marketwidget_main_marketmessage,s[a]); 
    appWidgetManager.updateAppWidget(thisWidget, remoteViews); 
    } 
} 
} 

Si j'utilise s [0] s au lieu [a], il ne fonctionne pas, seulement "woddfdf" montre en haut

Mon textView xml est:

<TextView android:id="@+id/TextView_marketwidget_main_marketmessage" 
    android:maxLines="1" android:focusable="true" 
    android:ellipsize="marquee" 
    android:inputType="text" 
    android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:textColor="#ffffff" android:background="@android:color/transparent" android:layout_width="80dip" android:layout_height="20dip"></TextView> 

Répondre

5

Ce que je suis de votre question est, vous voulez montrer un effet chapiteau de défilement dans TextView? Si j'ai raison, procédez comme suit.

Définissez android:ellipsize="marquee" dans TextView dans votre fichier de format (XML). Ensuite, dans la méthode onCreate() de votre activité, ajoutez la ligne textView.setSelected(true);.

Remarque: remplacez le nom textView par le nom de votre TextView.

Revenez à l'arrière pour toute requête.

+0

cette méthode que, compte tenu de mon application, le textView peut chapiteau, mais quand je mets la vue comme appwidget dans l'écran d'accueil , elle n'a pas de marque – pengwang

+0

Cette méthode ne fait défiler le texte que lorsque le texte y est plus long que sa largeur. Alors essayez avec plus de texte. – Mudassir

+0

je veux un appwidget avoir un effet de marque, donc je mets le TextView comme remoteView mais il ne peut pas obtenir l'effet – pengwang

1

Vous pouvez définir les propriétés android: ellipsize = "marquee" de textview. et espère que ce lien pourrait vous aider si sur l'utilisation de cette propriété ne fonctionne toujours pas: Ellipsize not working for textView inside custom listView

+0

je modifie mon textView xml mais, iconnot obtenir le marqueer, il seulement "woddfdfdf" – pengwang