sethengine
sethengine

Reputation: 93

Android - set layout background programmatically

I have noticed that the setBackground method for the RelativeLayout object is targeted for API 16 (Android 4.1) and higher, but my application has the target API 8 and I cannot use it.

Is there any alternative solution for this problem (besides marking the class/method with TargetApi(16) or changing the target API in the manifest)?
Thank you!

Edit: Eclipse was buggy and it showed me the same error for setBackgroundDrawable but now it seems to work. Thank you for your help.

Upvotes: 9

Views: 25550

Answers (3)

Cat
Cat

Reputation: 67512

Use one of:

If you use the second one, make sure to do a conditional check on your API version:

if (Build.VERSION.SDK_INT >= 16)
    view.setBackground(...);
else
    view.setBackgroundDrawable(...);

... and mark it with @TargetApi(16) and @SuppressWarnings("deprecation").

Upvotes: 30

Raghav Sood
Raghav Sood

Reputation: 82553

It depends. If you want to set a color as the background, use setBackgroundColor(). For a Drawable, you can use the now deprecated method setBackgroundDrawable() for APIs below 16, and setBackground() for API 16 devices. You can also use setBackgroundResource() for setting a resource as the background.

Note that while a lot of methods are marked as deprecated, I'm yet to come across one that has actually been removed. So while you could use the deprecated method even in API 16, I'd recommend setting your target API to 16 and using an if else to switch between the methods, depending on the API version the device is running.

Upvotes: 1

Samuel
Samuel

Reputation: 17171

Use setBackgroundDrawable() instead. It does the same thing, but it's been deprecated since the new setBackground() method.

Upvotes: 0

Related Questions