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的背景也不存在。