Тема Android не установлена
У меня есть тема, которая отказывается применять к действиям - ни один из стилей не применяется. Если я не предоставляю атрибуты layout_width
/layout_height
для <Button>
, он также получает ошибку времени выполнения, показывая, что класс Button
не применяется.
/res/values/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>
/res/values/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">
Какая очевидная ошибка у меня отсутствует?
Ответы
Ответ 1
Я тоже борется с этим, и думаю, что, наконец, нашел, что может быть проблемой - возможно, это одно и то же.
У меня была специальная тема, определенная в папке res\values
, но не в папках values-v11
и values-v14
. Который, я думаю, сделал это так, что в некоторых устройствах (особенно 2, которые я тестировал!), Тема не могла быть применена, потому что ее не было.
Теперь я вижу, что свойства, установленные в моей настраиваемой теме (применяются на уровне приложения), вступают в силу.
Ответ 2
Мне нужно было явно определять тему для каждого <activity>
.
Ответ 3
В соответствии с этим ответом, кажется, что невозможно создать стили 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 не поддерживает поддержку размеров виджета через стили.
Ответ 4
Просто из любопытства. Попробуйте переименовать свою тему в нечто иное, как FooBar.
Перейдем к описанию очевидного здесь, но убедитесь, что ваша кнопка использует правильный стиль.
Ответ 5
EDIT: Я не уверен, что это была просто опечатка в вопросе, но в вашей основной теме вы неправильно указали стиль Android Theme.Black. В коде говорится:
<style name="Theme" parent="android:style/Theme.Black">
Когда он скажет:
<style name="Theme" parent="@android:style/Theme.Black">
Мне кажется, что Lint или компилятор хватит на вас за это, прежде чем запускать приложение, но, возможно, это поможет.