RemoteView.setImageViewResource ничего не показывает
Я пытаюсь установить Image для ImageView в моем виджете, но вместо изображения я получил пустой экран
вот макет:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/stage"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
вот код:
public class MyWidget extends AppWidgetProvider {
Bitmap bitmap;
Bitmap bckgrnd;
Bitmap over;
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
RemoteViews widgetView = new RemoteViews(context.getPackageName(),
R.layout.widget);
bckgrnd=BitmapFactory.decodeResource(context.getResources(), R.drawable.backgrnd);
over=BitmapFactory.decodeResource(context.getResources(), R.drawable.human);
bitmap=bckgrnd.copy(Bitmap.Config.ARGB_8888, true);;
Canvas c=new Canvas(bitmap);
c.drawBitmap(over, 50, 50, new Paint());
widgetView.setImageViewBitmap(R.id.stage, bitmap);
Log.d("MyLog", "onEnabled");
}
......
}
Итак, у меня есть Log "OnEnabled" в моем LogCat, что означает, что этот код был выполнен хорошо, но ImageView остается пустым. Если я устанавливаю какое-либо изображение в макете XML - оно показывает это изображение, что означает, что XML установлен правильно, но код не меняет это изображение в ImageView.
Я пытался сделать это в onUpdate(), но это тоже не сработало. Что я могу сделать, чтобы изменить это изображение в ImageView?
2 ответа
Я думаю, что уже поздно.. но просто, чтобы помочь любому, кто все еще ищет.
Для меня это сработало..
// Change widget image, and update current app widget.
widgetView.setImageViewBitmap(R.id.stage, bitmap);
AppWidgetManager.getInstance(context).updateAppWidget(COMPONENT_NAME, widgetView);
А также, COMPONENT_NAME
является
COMPONENT_NAME = new ComponentName(context, MyWidget.class);
Это обновит каждый виджет вашего приложения. Если вы хотите, чтобы обновлялся только виджет, который вы щелкнули, передайте его widgetId
на месте COMPONENT_NAME
в updateAppWidget()
,
Я столкнулся с подобной проблемой, как вы, за исключением того, что я вызываю rv.setImageViewResource при последующих вызовах из onUpdate.
Мое решение состоит в том, что вы должны установить начальное изображение для ImageView в файле XML, затем вы можете изменить рис для ImageView во время выполнения; если вы не указали исходный рис в xml, то setImageViewResource не работает, ImageView ничего не показывает.
Обновить:
теперь setImageViewResource работает хорошо, независимо от того, есть ли у ImageView исходный src в xml или нет, но он подключен.