TextView 跑马灯

3

我想在主屏幕上放置一个textView,并需要跑马灯效果。

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);
    }
}
}

如果我使用s[0]而不是s[a],它将无法运行,只会显示"woddfdf"。
我的textView xml如下:
 <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>
3个回答

5
从您的问题中我了解到,您想在TextView中展示一个滚动字幕效果。如果我没理解错的话,请按照以下步骤操作。
在您的布局文件(XML)中的TextView元素中设置android:ellipsize="marquee"。然后,在Activity的onCreate()方法中添加一行代码:textView.setSelected(true); 注意:请将textView的名称替换为您的TextView的名称。
如有任何疑问,请回复本消息。

这个方法只针对我的应用程序,textView 才能滚动显示,但是当我将该视图作为小部件放置在主屏幕上时,它就没有滚动效果了。 - pengwang
Mudassir,我修改了if语句,但它无法编译。 - pengwang
尝试在布局文件中添加android:singleLine="true"。 - Mudassir
我使用了android:maxLines="1",同时也使用了android:singleLine="true",但结果是相同的。 - pengwang
@Mudassir 用户最初的问题是关于在主屏幕小部件中滚动TextView的问题。您的解决方案仅适用于Activity。 - IgorGanapolsky
显示剩余3条评论

1

我修改了我的textView的xml,但是图标没有滚动效果,它只显示"woddfdfdf"。 - pengwang

0

您需要在XML文件中添加的最小代码为:

<TextView
    .
    .
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    />

还有别忘了在你的onCreate方法中添加这行代码

textview.setSelected(true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接