各位:
我要在widget上实现一个文字滚动的功能,在widget上有个TextView,在TextView(见下面的布局文件)上实现文字滚动,在Activity内的TextView可以实现文字滚动功能,但是不知道为什么在widget上却不行,哪位高手告知一下,不胜感激。
我的布局文件如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="280dp"
android:layout_height="123dp">
<ImageView android:id="@+id/imageview" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:src="@drawable/frame" />
<TextView android:id="@+id/textview" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="#F00" 
android:textSize="25sp" 
android:gravity="center"
android:scrollHorizontally="true" 
android:singleLine="true"
        android:ellipsize="marquee"
        android:focusable="true"  
        android:marqueeRepeatLimit="marquee_forever"  
        android:focusableInTouchMode="true" 
        android:duplicateParentState="true" 

  />
</FrameLayout>

解决方案 »

  1.   

     可以的,去网上搜 android 跑马灯  效果
      

  2.   

    自定义控件实现Runnable接口 开线程在onDraw内自己写字 
      

  3.   


    public class MyWidget extends AppWidgetProvider {
    RemoteViews rv;
    MyHandler handler;
    AppWidgetManager manager;
    int[] ids;
    String str = "今天是星期五,明天我们放假!";
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
    int[] appWidgetIds) {
    ids = appWidgetIds;
    manager = appWidgetManager;

    handler = new MyHandler();
    handler.sendEmptyMessageDelayed(0, 1000);
    rv = new RemoteViews(context.getPackageName(), R.layout.main);
    rv.setTextViewText(R.id.text, str);
    appWidgetManager.updateAppWidget(appWidgetIds, rv);
    // TODO Auto-generated method stub
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    }

    private String go(String str){
    return str.substring(1) + str.substring(0, 1);
    }

    class MyHandler extends Handler{ @Override
    public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    super.handleMessage(msg);
    str = go(str);
    rv.setTextViewText(R.id.text, str);
    rv.setTextViewText(R.id.time, getFormatTime(new Date()));
    manager.updateAppWidget(ids[0], rv);
    handler.removeMessages(0);
    handler.sendEmptyMessageDelayed(0, 300);
    }
    }

    }
      

  4.   

    有人在widget实现跑马灯的效果吗?
      

  5.   

    AppWeidget支持TextView控件,因此我们可以使用TextView来制作跑马灯效果
    跑马灯效果:http://blog.csdn.net/ch_984326013/article/details/6627280
      

  6.   

    有人实现在widget上的跑马灯效果的实例吗?
      

  7.   

    这个要好好考虑下了 widget动画非常影响系统性能运行效率的  
    确定不能用TextView实现效果么  专门起个service刷新widget ,太耗资源了
      

  8.   

    不可以使用嵌套滚动层么~ 你试试。在frameLayout里面嵌套。
      

  9.   

    是不能实现的!至少在改内核前不能实现!
    因为AppWidget是从Receiver继承来的,而不是Activity,所以其表现能力很差,只能通过RemoteView,所以RemoteView有的就能实现,没有的就不能实现。当然也可以像4楼那样变通的实现。看看SDK就知道AppWidget在Android3.0之后才支持ListView等
      

  10.   

    楼主,我一个textview实现marquee效果可以,但是多个时候就不行了。原因是因为其他的获取不到焦点。这个时候,不知道大家有没有好的方法,widget又不可以自定义View  而且我动态调用RemoteView的 setBoolean方法去设置焦点。不知道为何总是不行,setBoolean(viewId,"setFocusable",true);就是不行。。唉,求解。。