2012-10-01 54 views
9

我已經注意到,的setBackground爲RelativeLayout的對象方法是針對API 16(安卓4.1)或更高版本,但我的應用程序有目標API 8,我不能使用它。Android的 - 組佈局的背景編程

是否存在針對此問題的任何替代解決方案(除了用TargetApi(16)或更改清單中的目標API來標記類/方法?
謝謝!

編輯:Eclipse的是越野車,它給我同樣的錯誤setBackgroundDrawable但現在它似乎工作。感謝您的幫助。

回答

31

用途之一:

如果我們E中的第二個,確保做對你的API版本條件檢查:

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

...與@TargetApi(16)@SuppressWarnings("deprecation")對它進行標記。

+1

啊我知道.setBackgroundDrawable(可繪製)方法,但對我來說,IDE有與api 16要求相同的錯誤。我正在使用Eclipse,並且在重新打開ide並清理代碼後,它似乎成了一個bug。比你非常抱歉,麻煩。 – sethengine

+1

@sethengine不要擔心麻煩 - 我們來幫忙!很高興你解決了這個問題。 – Eric

1

這取決於。如果你想設置一個顏色作爲背景,使用setBackgroundColor()。對於Drawable,您可以將現在不推薦使用的方法setBackgroundDrawable()用於16位以下的API,對於API 16設備則使用setBackground()。您也可以使用setBackgroundResource()將資源設置爲背景。

請注意,雖然許多方法被標記爲不推薦,但我還沒有碰到實際上已被刪除的方法。因此,雖然即使在API 16中也可以使用棄用的方法,但我建議將目標API設置爲16,並使用if else在方法之間切換,具體取決於設備運行的API版本。