Вопрос в том, чтобы получить массив целых чисел, для моего случая мне нужно прочитать цвета (int) из массива для моего настраиваемого представления, определения, как показано ниже:
<declare-styleable name="ColorPickerView">
<attr name="colors" format="reference" />
</declare-styleable>
Затем я используюмой пользовательский вид, как показано ниже:
<com.rainliu.colorpicker.ColorPickerView
android:id="@+id/rtePalette"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
colorPickerView:colors="@array/colorPickerColors"
/>
Определение цветов выглядит следующим образом:
<resources>
<color name="colorPrimary">#FF9800</color>
<array name="colorPickerColors">
<item>#000000</item>
<item>#E65100</item>
<item>@color/colorPrimary</item>
</array>
</resources>
Так что мне нужно получить цвета в моем пользовательском представлении (ColorPickerView), код, как показано ниже:
TypedArray ta = context.obtainStyledAttributes(attributeSet, R.styleable.ColorPickerView);
int colorsId = ta.getResourceId(R.styleable.ColorPickerView_colors, 0);
int[] colorsArray = ta.getResources().getIntArray(colorsId);
for (int a : colorsArray) {
Log.e("AA", "color == " + a);
}
ta.recycle();
Вот распечатка colorsArray:
03-11 14:25:53.894 15300-15300/com.chinalwb.are E/AA: color == -16777216
03-11 14:25:53.894 15300-15300/com.chinalwb.are E/AA: color == -1683200
03-11 14:25:53.894 15300-15300/com.chinalwb.are E/AA: color == -1683200
Надеюсь, это поможет некоторым парням.