Как добавить атрибут темы в Android: startColor в градиентном рисовании в Android? - PullRequest
5 голосов
/ 10 января 2012

Согласно документации Android, android: startColor может принимать атрибуты в качестве значения:

Это также может быть ссылка на ресурс (в форме «@ [package:] type: name») или атрибут темы (в форме "? [package:] [type:] name"), содержащее значение этого типа.

Я пытаюсь добавить атрибут в мой градиент, но я получаю сообщение об ошибке. Вот код для рисования:

Вот код в style.xml:

<style name="test" parent="android:Theme">
    <item name="android:startColor">#0b2749</item> 
    <item name="startColor">#0b2749</item>
</style>

Когда я пытаюсь запустить упражнение, я получаю следующее сообщение об ошибке:

01-10 20:47:30.810: E/AndroidRuntime(7279): Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2

Я попытался изменить «startColor» на «attr / startColor» и все еще получил ту же ошибку. Я также применил тему к действию в файле AndroidManifest.xml.

Как я могу добавить атрибут темы к градиентному рисованию?

Ответы [ 3 ]

3 голосов
/ 12 января 2012

У меня была такая же проблема в одном из моих рисунков, в котором я хочу разные цвета в зависимости от выбранной темы.Я нашел обходной путь, который не совсем решает проблему, но работает для меня.Вместо того, чтобы определять цвет в моих стилях, я определяю весь рисунок как ссылку.

В attrs.xml:

<resources>
    <attr name="myDrawable" format="reference"/>
<resources>

И в моих style.xml:

<style name="style1">
    <item name="myDrawable">@drawable/myDrawable1</item>
<style>
<style name="style2">
    <item name="myDrawable">@drawable/myDrawable2</item>
<style>

Конечно, вам нужно определить две рисованные папки в вашей папке для рисования, myDrawable1 и myDrawable2, каждая из которых имеет правильный жесткий цвет.

И это прекрасно работает.

0 голосов
/ 10 января 2012
<style name="customTheme" parent="android:Theme">  
    <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>
</style>

Добавьте приведенный выше код в colors.xml в папку значений и следующий код в styles.xml

<color name="titlebackgroundcolor">#FFFFFF</color>
<color name="titletextcolor">#000000</color>
0 голосов
/ 10 января 2012

Похоже, вы только что сделали небольшую ошибку за свой цвет. Android принимает тип ввода #[alpha] [hex] для цветов. Вы только что предоставили шестнадцатеричную часть. Android не поддерживает это, поэтому UnsupportedOperationException.

Попробуйте использовать это:

<item name="android:startColor">#FF0b2749</item>

Я не могу гарантировать, что это работает, поскольку я никогда не работал с градиентами в сочетании со стилем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...