Файл макета для моего виджета начинается с верхнего уровня с помощью:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/widget_margin"
android:id="@+id/widget"
android:background="#20000000" >
Итак, исходный фон является полупрозрачным. Затем в какой-то момент во время выполнения я вызываю следующее, чтобы сделать фон полностью прозрачным:
remoteViews.setInt(R.id.widget, "setBackgroundColor", Color.parseColor("#00000000"));
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
В то время как это работает, я обнаружил, что при добавлении другого виджета фон для этого виджета начинается как полностью прозрачный, а не полупрозрачный в соответствии с макетом xml. Это как если бы настройка цвета фона для одного виджета изменила его для всех, включая новые виджеты, добавленные впоследствии.
Теперь это нечетно, потому что в то же время, что и выше, я также добавляю растровое изображение в виджет (через RemoteViews
) с помощью:
remoteViews.setImageViewBitmap(R.id.imageView, bmp);
... и что растровое изображение не отображается во всех последующих виджетах, поэтому основной метод, который я использую, кажется, звучит.
Так почему же фон распространяется на другие виджеты?
EDIT добавить вывод appWidgetId
в соответствии с запросом в комментарии:
В основном происходит от Intent
, например. в onCreate()
конфигурации Activity
для виджета:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);