我在运行时以编程方式创建视图,我希望在运行时动态地将此视图添加到我的linearlayout中。这是我得到的代码:
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);
}
}
}
任何帮助将不胜感激!
答案 0 :(得分:6)
无法向应用小部件添加自定义View
。有关允许View
类型的信息,请参阅“App Widgets开发指南”的the "Creating the App Widget Layout" section。
Android 3.0增加了对某些视图的支持以显示集合。有关详细信息,请参阅the "Using App Widgets with Collections"部分。
否则,要向App Widget动态添加允许的View
,在对RemoteViews
进行充气并获取对它的引用后,您可以使用其addView(View)
方法或{{在addView(View)
。
View
个对象的方法
答案 1 :(得分:2)
正如布鲁斯正确回答的那样,无法使用自定义视图。由于您的视图似乎没有响应输入,只是绘制,您可以使用ImageView实现相同的功能。只需创建一个Bitmap,用它创建一个Canvas,然后使用你的onDraw代码绘制它。然后创建一个ImageView(在小部件中允许)并将其显示的图像设置为您的位图。