1

我正在尝试扩展一个 RelativeLayout 对象并包含一个嵌入的 SurfaceView 对象,该对象使用我的 /res/drawable 文件夹中的 png 文件作为其背景,但我在 XML 布局编辑器中不断收到错误消息。请参阅以下代码:

public class StopMotionRelativeLayout extends RelativeLayout
{
    private Context myContext;
    private SurfaceView surfaceView1;

    private BitmapFactory.Options myBitmapOptions;
    private final android.view.ViewGroup.LayoutParams params = 
        new LayoutParams(LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.FILL_PARENT);

    public StopMotionRelativeLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        myContext = context;
        this.setBackgroundColor(Color.GREEN);

        //init images
        surfaceView1 = new SurfaceView(myContext,attrs);
        surfaceView1.setVisibility(View.INVISIBLE);
        this.addView(surfaceView1, params);

    }

        @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
    {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        myBitmapOptions = new Options();
        myBitmapOptions.outWidth = widthMeasureSpec;
        myBitmapOptions.outHeight = heightMeasureSpec;

        surfaceView1.setBackgroundDrawable(new BitmapDrawable(BitmapFactory.decodeResource(this.myContext.getResources(),
                R.drawable.golf1, myBitmapOptions)));
    }
}

我收到以下错误:

NotFoundException:在当前配置中找不到可绘制资源匹配值 0x7F020002(解析名称:golf1)。

我现在可能已经看到这种类型的错误,当我尝试通过代码而不是 XML 从资源文件中加载某些内容时,它总是会发生。奇怪的是,这个错误并没有阻止我编译应用程序,并且应用程序在模拟器中运行没有错误。不过,我想重新使用我的布局编辑器...

请帮忙。

更新:这是布局 XML

<?xml version="1.0" encoding="utf-8"?>

<com.games.test.StopMotionRelativeLayout android:id="@+id/RelativeLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">
</com.games.test.StopMotionRelativeLayout>
4

1 回答 1

0

我想知道如果您在 XML 中为 android:background 指定一个值,然后在您的代码中覆盖它,它是否会起作用。

作为一种解决方法,您也可以尝试调用 isInEditMode() 函数,而不是在编辑模式下设置背景。

于 2011-04-21T19:08:16.260 回答