是背景和setBackgroundColor相同

时间:2012-02-29 23:56:52

标签: android android-linearlayout

如果我在xml中设置颜色如下:

<LinearLayout
    android:id="@+id/borderForList"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/default_border_color" >

我得到了我的颜色。如果我在代码中这样做:

m_border.setBackgroundColor(R.color.default_border_color);

颜色不同。这些方法是否相同?

2 个答案:

答案 0 :(得分:1)

m_border.setBackgroundColor(getResources().getColor(R.color.default_border_color));
R.color.default_border_color是R文件中的资源整数,由android自动生成,setBackgroundColor()需要一个颜色整数,因此您必须通过调用getResources().getColor()方法进行转换。

http://developer.android.com/reference/android/content/res/Resources.html#getColor(int

答案 1 :(得分:0)

不,他们不一样。

对于background,以下内容是等效的:

android:background="@color/default_border_color" 

public void setBackgroundResource(int resid)

因此,您可以在drawable或java代码中设置背景资源colorxml ..等。)。

至于backgroundcolor,似乎没有xml属性(例如android:backgroundcolor),而是公共方法:

public void setBackgroundColor (int color)