Imagen de fondo de Android Widget Cambiar

He estado luchando por los últimos dos días para cambiar el fondo de mi widget, basado en algunas declaraciones if (eliminado ahora sólo quiero cambiar el fondo del widget de la clase) aquí es mi fuente a continuación. ¿Qué pasa, sin embargo, he cambiado las imágenes antes bien como fondos, pero no puede conseguir que funcione para mi widget gracias. Este es mi intento más reciente por el camino

//Widget Provider Class public class WidgetProvider extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { final int N = appWidgetIds.length; for (int i=0; i<N; i++) { int appWidgetId = appWidgetIds[i]; Intent intent = new Intent(context, com.widget.WidgetDialog.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); views.setOnClickPendingIntent(R.id.widget, pendingIntent); appWidgetManager.updateAppWidget(appWidgetId, views); views.setImageViewBitmap(R.id.widget, ((BitmapDrawable)context.getResources().getDrawable(R.drawable.widget_background)).getBitmap()); } } } //Widget Layout XML <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/widget" android:background="#00000000" android:layout_width="fill_parent" android:layout_height="fill_parent"> </Button> </LinearLayout> 

Aquí está un truco que puede hacer: use ImageView para su fondo, no la propiedad "background" de usted. Vea y establezca scaleType en "fitXY". Me gusta esto:

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/backgroundImage" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/some_background" android:scaleType="fitXY"/> <RelativeLayout android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:text="some button" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <!-- all your views --> </RelativeLayout> </FrameLayout> 

Ahora puede cambiar su fuente ImageView durante el tiempo de ejecución:

 //updating current widget AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget_layout); views.setImageViewResource(R.id.backgroundImage, R.drawable.some_other_background); appWidgetManager.updateAppWidget(widgetId, views); 

Intente usar setImageViewResource()

 remoteViews.setImageViewResource(R.id.widget, R.drawable.widget_background); 

Gracias

Alguien tiene otras ideas? Realmente me gustaría conseguir esto resuelto

Editar: terminó la configuración de diferentes diseños en la actualidad tienen 10 diseños diferentes para 2 widgets diferentes ineficaces, pero trabajando más de un hack alrededor de verdad

  • Obtener preferencias en AppWidget Provider
  • Android: pasar AppWidgetId a un servicio
  • ¿Cómo implementar paneles expandibles en Android?
  • Android 4.0: widgets no aparecen?
  • Widget de Android no se actualizará
  • No se puede enviar la intención pendiente del widget, SendIntentException
  • Establecer switchStyle - obtener error recurso no encontrado - ¿por qué?
  • RemoteViews setViewVisibility en Android Widget
  • Múltiples instancias de intención pendiente
  • Actualizar Android Widget de la actividad
  • Notificación de Android después de que la aplicación está instalada en el dispositivo - ¿Cómo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.