动态添加自定义视图到RemoteViews

时间:2011-03-25 10:40:21

标签: android-widget

有人可以帮我这么做吗?我的代码就像:

 public CustomClass extends View {

//uses ondraw() to do something

}

为了在主屏幕上显示我的自定义视图,我创建了一个扩展广播接收器的类:

public class customAppWidgetProvider extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {
            RemoteViews views = new RemoteViews(context.getPackageName(),
                    R.layout.main);

           //Here I want to create my custom view class object and I want to add this view to linear layout in main.xml

              CustomClass object = new CustomClass(context) ;
              LinearLayout layout = new LinearLayout(context) ;
              layout.setLayoutParameters(new LayoutParameters(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
              layout.addView(object);

            views.addview(R.id.linearlayout, (ViewGroup) layout) ;
            views.setOnClickPendingIntent(R.id.analog_appwidget,
                    PendingIntent.getActivity(context, 0,
                        new Intent(context, AlarmClock.class),
                        PendingIntent.FLAG_CANCEL_CURRENT));

            int[] appWidgetIds = intent.getIntArrayExtra(
                    AppWidgetManager.EXTRA_APPWIDGET_IDS);

            AppWidgetManager gm = AppWidgetManager.getInstance(context);
            gm.updateAppWidget(appWidgetIds, views);
        }
    }
}

但是将ViewGroup添加到RemoteView引用不起作用...上面的main.xml布局仅包含LinearLayout。我想为它添加一个自定义视图对象。但是在运行之后,屏幕上没有显示任何内容......

请帮我这样做。在此先感谢。

1 个答案:

答案 0 :(得分:8)

无法向应用小部件添加自定义View。有关允许View类型的信息,请参阅“App Widgets开发指南”的the "Creating the App Widget Layout" section

Android 3.0增加了对某些视图的支持以显示集合。有关详细信息,请参阅“使用带有集合的App小部件”部分。

否则,要向App Widget动态添加允许的View,在对RemoteViews进行充气并获取对它的引用后,您可以使用其addView(View)方法或{{在addView(View)

中已有的任何View个对象的方法