Как программно изменить фон макета виджета в Android

Возьмем, к примеру, этот макет виджета (часть всего моего макета виджета)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/widget_background_dark_4x2"
android:orientation="horizontal"
android:id="@+id/widget_main"
>

Я хочу иметь возможность изменять фоновый рисунок, используемый на основе выбора пользователя. Например, используя удаленные представления, я могу обновить цвет текстового представления, выполнив что-то вроде этого:

remoteView.setTextColor(R.id.text_view1, Color.WHITE);

Однако мне было трудно сделать то же самое для фона моего линейного макета. Я пробовал это:

remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable", ((BitmapDrawable) context.getResources().getDrawable(R.drawable.widget_background_dark_4x2)).getBitmap());

Но получаю следующую ошибку:

06-01 22:46:36.305: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LinearLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap)

<< EDIT >> Также пробовали это:

Bitmap bitmap = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.widget_background_light_4x2)).getBitmap();
remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable",bitmap );

Но, к сожалению, получили следующую ошибку:

06-01 23: 11: 26.039: WARN / AppWidgetHostView (244): updateAppWidget не удалось найти ни одно представление, используя представление ошибки 06-01 23: 11: 26.039: WARN / AppWidgetHostView (244): android.widget.RemoteViews $ ActionException: view: android.widget.LinearLayout не имеет метода: setBackgroundDrawable (android.graphics.Bitmap)

13
задан Cœur 21 January 2019 в 11:46
поделиться