0

在一些用户操作之后,我需要更改当前活动的背景

按照我写的代码

Drawable d = new BitmapDrawable(getResources(),readBitmap(Uri.fromFile(new File(getFilesDir(), imageName))));
this.findViewById(android.R.id.content).setBackground(d);
this.findViewById(android.R.id.content).refreshDrawableState();
public Bitmap readBitmap(Uri selectedImage) {
    Bitmap bm = null;
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 1; // reduce quality
    ParcelFileDescriptor pFileDescriptor = null;
    try {
        //fileDescriptor = this.getContentResolver().openAssetFileDescriptor(selectedImage, "r");
        pFileDescriptor = this.getContentResolver().openFileDescriptor(selectedImage, "r");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        try {
            bm = BitmapFactory.decodeFileDescriptor(pFileDescriptor.getFileDescriptor(), null, options);
            pFileDescriptor.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return bm;
}

这是content.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_img_body"
    tools:context=".MainActivity" >

此外,如果我删除 XML 中设置的背景,它工作得很好!我很困惑

修改后的 XML(工作)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".MainActivity" >

任何人都可以请建议。

谢谢是提前

4

2 回答 2

1

尝试this.findViewById(android.R.id.content).setBackgroundDrawable(d);

于 2013-08-02T09:42:43.967 回答
0

首先为您的布局提供 id

第二个 findviewbyid 那个布局

第三个 layout.setBackgroundResource(getResources().getDrawable(R.drawable.ready));

问题解决 !!!

于 2013-08-02T10:01:05.317 回答