Можно ли получить значения стилизованных атрибутов из определенной темы без установки темы до приложения/активности?
(Я имею в виду, прежде чем вызывать context.setTheme(..)
)
Как получить значения атрибутов темы
Ответ 1
Например, чтобы получить значение атрибута editTextColor темы MyTheme:
TypedArray a = getTheme().obtainStyledAttributes(
R.style.MyTheme,
new int[] { R.attr.editTextColor });
// Get color hex code (eg, #fff)
int intColor = a.getColor(0 /* index */, 0 /* defaultVal */);
String hexColor = Integer.toHexString(intColor);
// Don't forget to recycle
a.recycle();
Ответ 2
JavaDoc:
метод
TypedArray
android.content.res.Resources.Theme.obtainStyledAttributes(int[]
ATTRS)Верните a
TypedArray
, удерживая значения, определенные темой, которые перечисленные в attrs.Обязательно вызовите
TypedArray.recycle()
, когда закончите с массивом.
Ответ 3
если вам нужно это в XML файле, вы можете использовать что-то вроде этого:
style="?android:attr/panelTextAppearance"
например:
<TextView
style="?android:attr/panelTextAppearance"
android:paddingTop="?android:attr/paddingTop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/your_text"
/>
если вы используете eclipse, управляйте + щелчком по элементу, чтобы увидеть другие возможные значения (откроется файл attrs.xml).