1. 程式人生 > >android ImageView中setBackground相關屬性的區別

android ImageView中setBackground相關屬性的區別

最近在寫android程式時,遇到以下情形:

底部導航欄要用到4個ImageView來實現,在點選不同的ImageView是,要對其背景色進行設定,在使用ImageView關於setBackground相關屬性設定時,會出現異常,從而導致android程式崩潰試了好多辦法都不行,於是乎,就到android 官方網站查API,才把問題解決。寫一篇部落格記下來,防止以後再忘記。

首先看一下android官方給的文件:

public void setBackground (Drawable background)

Set the background to a given Drawable, or remove the background. If the background has padding, this View's padding is set to the background's padding. However, when a background is removed, this View's padding isn't touched. If setting the padding is desired, please use .

Parameters
background The Drawable to use as the background, or null to remove the background

public void setBackgroundColor (int color)

Sets the background color for this view.

Parameters
color the color of the background

public void setBackgroundDrawable (Drawable background)

This method was deprecated in API level 16.
use  instead


public void setBackgroundResource (int resid)

Set the background to a given resource. The resource should refer to a Drawable object or 0 to remove the background.

Parameters
resid The identifier of the resource.

從官方給出的API可以得出以下結論:

1.setBackgroundColor(),setBackgroundDrawable(),setBackgroundResource()三個方法從API 1開始就已經存在,而setBackgrouond()是從API 16才引進來的(Android 4.1開始),目的是為了取代setBackgroundDrawable().

所以如果開發的android API 在16+,則推薦使用setBackground().

2.三者區別:

setBackgroundColor(int color)

看其引數和說明可知,要傳入一個顏色的ID值,可以使在colors.xml中定義的資源,也可以使用ARGB模式的十六進位制數值來表示,如0xFFFF0000(紅色);

setBackgroundResource(int resid)

這個方法在XML中有對應的屬性android:background,可以理解為給ImageView設定背景,引數為資源的ID。

setBackground(Drawable background)

這個表示給ImageView設定背景,引數為資源,一般為圖片,與其他不同的是,當背景有內邊距的時候,那麼View的內邊距被設定和背景的內邊距一樣,當背景不存在的時候,View的背景也不存在。