2016-08-15 66 views
0

我已經在attrs.xml宣佈該屬性:如何獲取自定義屬性(attrs.xml)的值?

<resources> 
    <attr name="customColorPrimary" format="color" value="#076B07"/> 
</resources> 

我需要得到它的價值,這應該是「#076B07」,而是我得到一個整數:「2130771968」

我正在以這種方式訪問​​該值:

int color = R.attr.customColorFontContent; 

是否有正確的方法來獲取此屬性的實際值?

謝謝

回答

2

不,這不是正確的方法,如整數R.attr.customColorFontContent是由Android Studio生成的資源標識符時,你的應用程序編譯。

相反,您需要獲取與主題中的屬性關聯的顏色。使用下面的類來做到這一點:

public class ThemeUtils { 
    private static final int[] TEMP_ARRAY = new int[1]; 

    public static int getThemeAttrColor(Context context, int attr) { 
     TEMP_ARRAY[0] = attr; 
     TypedArray a = context.obtainStyledAttributes(null, TEMP_ARRAY); 
     try { 
      return a.getColor(0, 0); 
     } finally { 
      a.recycle(); 
     } 
    } 
} 

然後,您可以使用它像這樣:

ThemeUtils.getThemeAttrColor(context, R.attr.customColorFontContent); 
+0

謝謝!非常! – NullPointerException

+0

TR4Android你知道如何設置屬性的默認值嗎?設置值=「#076B07」在屬性中不起作用 – NullPointerException

+0

沒問題,很高興我可以幫忙。 – TR4Android

0

你應該如下訪問color屬性:

public MyCustomView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, 0, 0); 
    try { 
     color = ta.getColor(R.styleable.MyCustomView_customColorPrimary, android.R.color.white); //WHITE IS THE DEFAULT COLOR 
    } finally { 
     ta.recycle(); 
    } 

    ... 
} 
相關問題