Тема Android не устанавливается - PullRequest
18 голосов
/ 09 февраля 2011

У меня есть тема, которая не применяется к действиям - ни один из стилей не применяется. Если я не предоставлю атрибуты layout_width / layout_height для <Button>, он также получит ошибку времени выполнения, показывающую, что класс Button не применяется.

/ Рез / значения / themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme" parent="android:style/Theme.Black">
        <item name="android:windowNoTitle">true</item>
        <item name="android:buttonStyle">@style/Button</item>
        <item name="android:windowBackground">@color/page_background_light</item>
        <item name="android:textAppearance">@style/TextAppearance</item>
    </style>
</resources>

/ Рез / значения / styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="TextAppearance" parent="@android:style/TextAppearance">
        <item name="android:textSize">12sp</item>
        <item name="android:textColor">@color/darkblue</item>
    </style>
    <style name="Button" parent="@android:style/Widget.Button">
        <item name="android:layout_width">fill_parent</item> 
        <item name="android:layout_height">wrap_content</item>
        <!--<item name="android:textColor">#3C2F4F</item>
        <item name="android:textSize">20dip</item>-->
    </style>
</resources>

и соответствующая настройка манифеста :

<application android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/Theme">

Какая очевидная ошибка, которую я упускаю?

Ответы [ 5 ]

22 голосов
/ 18 ноября 2012

Я тоже с этим боролся, и думаю, я наконец-то нашел, в чем, возможно, была проблема - возможно, это та же самая проблема.

У меня была определенная пользовательская тема в res\valuesпапку, но не в папках values-v11 и values-v14.Что, я думаю, сделало так, чтобы на некоторых устройствах (особенно на 2, с которыми я тестировал!) Тема не могла быть применена, потому что она не существовала.

Теперь я вижу, как свойства, установленные в моей пользовательской теме (применяются на уровне приложения), вступают в силу.

4 голосов
/ 14 сентября 2012

Я должен был явно определить тему для каждого <activity>.

3 голосов
/ 25 сентября 2012

Согласно этому ответу , кажется, что невозможно предоставить layout_width и layout_height через стили.Во время компиляции возникает исключение:

E/AndroidRuntime(4117): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example/com.example.MainActivity}:
java.lang.RuntimeException: Binary XML file line #79: You must supply a
layout_width attribute.

Я не уверен, почему это так, но может быть обходной путь. Поскольку этот вопрос предполагает , вы можете предоставить ссылку в качестве параметра ширины и высоты.

Опять же, мой опыт показывает, что Android должным образом не поддерживает предоставление размеров виджетов через стили.

0 голосов
/ 21 сентября 2012

РЕДАКТИРОВАТЬ: Я не уверен, что это просто опечатка в вопросе, но в вашей основной теме вы ссылаетесь на стиль Android Theme.Black неправильно.Ваш код говорит:

<style name="Theme" parent="android:style/Theme.Black">

Когда он должен сказать:

<style name="Theme" parent="@android:style/Theme.Black">

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

0 голосов
/ 22 сентября 2011

Просто из любопытства. Попробуйте переименовать вашу тему во что-то еще, например, в FooBar.

Собираюсь изложить очевидное здесь, но убедитесь, что ваша кнопка использует правильный стиль.

...