Android: Setting Background Image for RelativeLayout?

前端 未结 4 1513
耶瑟儿~
耶瑟儿~ 2021-01-04 04:31

I have downloaded an image at runtime. Now I want to set it as a background for RelativeLayout. Does it possible?

相关标签:
4条回答
  • 2021-01-04 05:02

    Instead use:

    View lay = (View) findViewById(R.id.rLayout);
    lay.setBackgroundResource(R.drawable.newImage);
    

    This works because R.drawable.newImage refers to an integer. So you could do:

    int pic = R.drawable.newImage;
    lay.setBackgroundResource(pic);
    
    0 讨论(0)
  • 2021-01-04 05:03

    In the onCreate function:

    RelativeLayout baseLayout = (RelativeLayout) this.findViewById(R.id.the_layout_id);
    
    Drawable drawable = loadImageFromAsset();
    
    if(drawable != null){
        baseLayout.setBackground(drawable);
        Log.d("TheActivity", "Setting the background");
    }
    

    The image loading method:

    public Drawable loadImageFromAsset() {
    
        Drawable drawable;
    
        // load image
        try {
    
            // get input stream
            InputStream ims = getAssets().open("images/test.9.png");
    
            //Note: Images can be in hierarical 
    
            // load image as Drawable
            drawable = Drawable.createFromStream(ims, null);
    
        }
        catch(IOException ex) {
            Log.d("LoadingImage", "Error reading the image");
            return null;
        }
    
        return drawable;
    }
    

    The open method:

    > public final InputStream open (String fileName, int accessMode)
    > 
    > Added in API level 1 Open an asset using an explicit access mode,
    > returning an InputStream to read its contents. This provides access to
    > files that have been bundled with an application as assets -- that is,
    > files placed in to the "assets" directory.
    > 
    > fileName --- The name of the asset to open. This name can be hierarchical.
    > 
    > accessMode --- Desired access mode for retrieving the data.
    > 
    > Throws IOException
    
    0 讨论(0)
  • 2021-01-04 05:09

    Check out the setBackgroundDrawable, or maybe createFromPath in the Drawable class.

       RelativeLayout rLayout = (RelativeLayout) findViewById (R.id.rLayout);
       Resources res = getResources(); //resource handle
       Drawable drawable = res.getDrawable(R.drawable.newImage); //new Image that was added to the res folder
    
        rLayout.setBackground(drawable);
    
    0 讨论(0)
  • 2021-01-04 05:11

    Try this for Xamarin.Android (Cross Platform) -

    RelativeLayout relativeLayout = new RelativeLayout (this);
    

    OR

    RelativeLayout relativeLayout = (RelativeLayout)FindViewById (Resource.Id.relativeLayout);
    

    AND

    relativeLayout.SetBackgroundDrawable (Resources.GetDrawable (Resource.Drawable.imageName));
    
    0 讨论(0)
提交回复
热议问题