вот моя проблема. Я определил пользовательские темы и стили, чтобы настроить различные представления в соответствующих файлах .xml. Вот некоторые выдержки из кода:
themes.xml:
...
<style name="Legacy" parent="android:Theme.NoTitleBar">
<item name="android:buttonStyle">@style/Legacy.Button</item>
...
</style>
styles.xml:
...
<style name="Legacy.Button" parent="@android:style/Widget.Button">
<item name="android:textColor">#ffffff</item>
<item name="android:background">@drawable/button_selector_blue</item>
<item name="android:textSize">15dp</item>
</style>
Допустим, я установил тему моего приложения в Legacy. Если я использую кнопку в макете, она получит мои собственные параметры по умолчанию (белый текст, фон @ drawable / button_selector_blue и т. Д.).
Теперь давайте предположим, что я хочу сохранить эти параметры для размера текста: я хотел бы иметь несколько кнопок с большим размером текста, которые будут определены в атрибуте titleSize в attrs.xml:
...
<attr name="titleSize" format="reference|dimension" />
и какое значение установлено для каждой темы в моем файле themes.xml.
Так что мой макет будет содержать что-то вроде:
<Button
android:id="@+idmyButtonId"
android:drawableRight="@drawable/aDrawable"
android:text="@string/someText"
android:textSize="?titleSize"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</Button>
При запуске моего приложения я получаю следующую ошибку:
java.lang.UnsupportedOperationException: не удается преобразовать в измерение: type = 0x2
Так что, похоже, я не могу настроить пользовательские стили, используя атрибуты - по крайней мере, не так. Это возможно? Если нет, что бы вы использовали для достижения такого результата?
Я бы хотел дать пользователю возможность выбирать из разных тем, поэтому я не могу просто определить дополнительный стиль ButtonWithLargeText и напрямую использовать его в моем макете.
Спасибо за вашу помощь!