如何将xml中定义的形状设置为窗口小部件中图像的背景? 以下是我的尝试:
RemoteViews views = new RemoteViews(c.getPackageName(), R.layout.widget_layout);
Drawable dr = getResources().getDrawable(R.drawable.widgetshape); //class cast exception
Bitmap bp = ((BitmapDrawable)dr).getBitmap();
views.setImageViewBitmap(R.id.ImageView01, bp);
这会导致android.graphics.drawable.GradientDrawable类强制转换异常。
Bitmap icon = BitmapFactory.decodeResource(WidgetConfig.this.getResources(), R.drawable.widgetshape);
views.setImageViewBitmap(R.id.ImageView01, icon);
这会在awm.updateAppWidget(awID, views);
行上抛出NullPointerException错误。
Bitmap bp = ((BitmapDrawable)this.getResources().getDrawable(R.drawable.widgetshape)).getBitmap(); //Class Cast Exception
views.setImageViewBitmap(R.id.ImageView01, bp);
这会在第一行产生android.graphics.drawable.GradientDrawable类转换异常。
答案 0 :(得分:1)
您可以使用setInt
实例调用RemoteViews
方法来执行此操作:
views.setInt(R.id.layout, "setBackgroundResource", R.drawable.widgetshape);
要实现此目的,您必须在小部件布局的@id
(可能是根视图)上将"layout"
属性设置为 View
(在xml)。
您还可以从xml定义该视图的背景,例如:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/widgetshape">