1

如何将 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);

这会在线路上引发 NullPointerException 错误awm.updateAppWidget(awID, views);

Bitmap bp = ((BitmapDrawable)this.getResources().getDrawable(R.drawable.widgetshape)).getBitmap(); //Class Cast Exception
views.setImageViewBitmap(R.id.ImageView01, bp);

这会导致第一行出现 android.graphics.drawable.GradientDrawable 类强制转换异常。

4

1 回答 1

1

您可以使用setInt调用RemoteViews实例的方法来做到这一点:

views.setInt(R.id.layout, "setBackgroundResource", R.drawable.widgetshape);

为此,您必须在小部件布局(在 xml 中)的(可能是根视图)上@id设置一个属性。"layout"View

您还可以从 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">
于 2012-05-16T16:07:02.077 回答