Динамическое добавление пользовательского представления в RemoteViews - PullRequest
4 голосов
/ 25 марта 2011

Может ли кто-нибудь помочь мне сделать это?Мой код выглядит так:

 public CustomClass extends View {

//uses ondraw() to do something

}

Для отображения моего собственного представления на главном экране я создал класс для расширения Broadcast Receiver:

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 Ответ

8 голосов
/ 12 июня 2011

Невозможно добавить пользовательский View в виджет приложения. См. раздел «Создание макета виджета приложения» Руководства по разработке виджетов приложения, чтобы узнать, какие типы View разрешены.

В Android 3.0 добавлена ​​поддержка некоторых представлений для отображения коллекций. Подробнее см. В разделе «Использование виджетов приложений с коллекциями».

В противном случае, для динамического добавления разрешенного View в виджет приложения, после надувания RemoteViews и получения ссылки на него, вы можете использовать его метод addView(View) или addView(View) для любого из View объекты уже в RemoteViews.

...