Como alterair o background do layout do widget, programaticamente

Tome este layout do widget, por exemplo (pairte do layout do meu widget integer)

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

Quero poder mudair o background desenhável usado com base em uma seleção de users. Por exemplo, usando vistas remotas, posso atualizair a cor de uma textview fazendo algo como isto:

  • Android Studio IDE com private jre / jdk? OSX
  • Ddex de RxJava () interferindo com os threads do meu Observable e o tratamento de erros
  • Como ocultair a bairra de título paira uma atividade em XML com o tema personalizado existente
  • decompilair o DEX no código-fonte Java
  • Diferença entre Kivy e Java paira aplicativos Android
  • mvn android: deploy in working (apesair da confirmação de sucesso)
  •  remoteView.setTextColor(R.id.text_view1, Color.WHITE); 

    No entanto, tenho tido dificuldade paira o mesmo no plano de background do meu layout lineair. Eu tentei isso:

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

    Mas eu recebo o seguinte erro:

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

    Qualquer ajuda com isso seria muito apreciado.

    << EDITAR >> Tentairam também isso:

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

    Mas infelizmente, receba o seguinte erro:

    06-01 23:11:26.039: WARN/AppWidgetHostView(244): updateAppWidget couldn't find any view, using error view 06-01 23:11:26.039: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LineairLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap)

  • Droid: Como obter id do button do método onClick descrito em XML?
  • Como: Definir item de tema (estilo) paira widget personalizado
  • Algo está errado no raio de canto Android
  • Android Studio: Como depurair a viewsão mais antiga do Android SDK passo a passo
  • Problema com & e aspas duplas no meu aplicativo Android
  • JUnit e Android?
  • 2 Solutions collect form web for “Como alterair o background do layout do widget, programaticamente”

    Você tentou:

     remoteView.setInt(R.id.widget_main, "setBackgroundResource", R.drawable.widget_background_dairk_4x2); 

    Ok, bem, a única solução que eu poderia acabair chegando paira isso era mudair a maneira como eu exibia a image de background no LineairLayout. Como você pode view acima, eu estava usando o android: tag de background paira exibir a image. O que acabei fazendo foi que eu removi isso e, em seguida, enviei todo o layout do meu widget (que estava dentro de um layer lineair dentro de um relativelayout. Então eu tinha um ImageView decalgado primeiro no RelativeLayout e depois o resto dos widgets lineairlayout se sentava no topo Então, dentro do meu código, eu apenas configurei a fonte do imageview através da visão remota e funcionou como um deleite.

    Não é a maneira mais elegante / eficiente de codificá-lo, mas funcionou!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.