如何以编程方式更改小部件布局背景

以这个小部件布局为例(我整个小部件布局的一部分)

<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" > 

我希望能够更改基于用户select使用的背景绘制。 例如使用远程视图,我可以通过做这样的事情来更新textview的颜色:

 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) 

任何帮助,将不胜感激。

“编辑”也试过这个:

 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 couldn't find any view, using error view 06-01 23:11:26.039: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LinearLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap)

Solutions Collecting From Web of "如何以编程方式更改小部件布局背景"

你试过了吗:

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

好吧,我唯一可以解决的办法就是改变我在LinearLayout中显示背景图片的方式。 正如你可以看到上面我使用android:background标签来显示图像。 我最终做的是我删除了这个,然后包裹了我的整个小部件布局(在一个relativelayout内部的一个线性布局中,然后我在RelativeLayout中首先对ImageView进行了decalred,然后让其余的部件linearlayout坐在上面然后在我的代码中,我只是通过远程视图设置imageview源代码,它像一个美味的东西。

不是最优雅/有效的编码方式,但它的工作!