动态地向Android小部件添加视图

6
我正在运行时编程创建一个视图,并希望将此视图动态添加到我的线性布局中。以下是我得到的代码:
public class Widget extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        RemoteViews updateViews = new RemoteViews(context.getPackageName(),
                R.layout.main);

        DemoView dv = new DemoView(context);

            // Stuck here...How do I add my new dv View to my android widget

        appWidgetManager.updateAppWidget(appWidgetIds, updateViews);
        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }


     private class DemoView extends View {
        public DemoView(Context context) {
            super(context);


        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            Paint LedColor = new Paint();
            Paint BlankColor = new Paint();
            Path p,p1;
            Matrix m = new Matrix();

            LedColor.setStyle(Paint.Style.FILL);
            LedColor.setColor(0xffffffff);

            BlankColor.setStyle(Paint.Style.FILL);
            BlankColor.setColor(0xff111111);

            DigitPaths dp = new DigitPaths();

            p = dp.GetDigitPath(-1);
            p1 = dp.GetDigitPath(5);

            p.offset(50, 50);
            p1.offset(50, 50);

            m.setScale(6.5f, 6.5f);
            p.transform(m);
            p1.transform(m);
            canvas.drawPath(p,BlankColor);
            canvas.drawPath(p1, LedColor);
        }
    }
}

非常感谢您的帮助!

2个回答

6
无法向应用小部件添加自定义 View。请参阅应用小部件开发指南中的"创建应用小部件布局"部分,了解允许使用哪些View类型。
Android 3.0增加了对一些视图集合的支持。有关详细信息,请参见"使用带集合的应用小部件"部分。
否则,在填充RemoteViews并获取其引用后,可以使用其addView(View)方法或在RemoteViews中已有的任何View对象上使用addView(View)方法来动态添加允许的View到应用小部件中。

2

正如Bruce正确回答的那样,无法使用自定义视图。由于您的视图似乎不响应输入,只是绘制,因此您可以通过使用ImageView实现相同的功能。只需创建一个Bitmap,创建一个带有它的Canvas,然后使用您的onDraw代码进行绘制即可。然后创建一个ImageView(这在小部件中是允许的),并将其显示的图像设置为您的Bitmap。


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