【问题标题】:Dynamically adding a View to an android widget将视图动态添加到 android 小部件
【发布时间】:2011-06-12 02:54:16
【问题描述】:

我在运行时以编程方式创建一个视图,我希望在运行时动态地将这个视图添加到我的线性布局中。这是我得到的代码:

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

任何帮助将不胜感激!

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

    无法将自定义 View 添加到应用小部件。请参阅 App Widgets 开发指南的 the "Creating the App Widget Layout" section,了解允许使用哪些 View 类型。

    Android 3.0 增加了对某些视图的支持以显示集合。有关详细信息,请参阅the "Using App Widgets with Collections" 部分。

    否则,要将允许的View 动态添加到 App Widget,在膨胀 RemoteViews 并获得对它的引用之后,您可以使用其 addView(View) 方法,或在任何View 对象已在 RemoteViews 中。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-05-08
        • 1970-01-01
        • 2011-09-07
        • 2017-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-19
        相关资源
        最近更新 更多