Dynamically adding a View to an android widget

天涯浪子 提交于 2019-12-07 04:12:01

问题


I am programmically creating a view at runtime and I want to this view to be added to my linearlayout dynamically at runtime. Here is the code I got:

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

Any help would be appreciated!


回答1:


It's not possible to add a custom View to an app widget. See the "Creating the App Widget Layout" section of the App Widgets Dev Guide for what View types are allowed.

Android 3.0 adds support for some views to display collections. See the "Using App Widgets with Collections" section for details.

Otherwise, to dynamically add an allowed View to an App Widget, after inflating the RemoteViews and getting a reference to it, you can use its addView(View) method, or the addView(View) method on any of the View objects already in the RemoteViews.




回答2:


As Bruce correctly answered, it is not possible to use a custom view. Since it seems like your view doesn't respond to input, and just draws, you can achieve the same functionality with an ImageView. Just create a Bitmap, create a Canvas with it, and then draw on it using what was your onDraw code. Then create an ImageView (which is allowed in a widget) and set the image it displays to your Bitmap.



来源:https://stackoverflow.com/questions/6319833/dynamically-adding-a-view-to-an-android-widget

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!