我有一个拒绝应用于活动的主题 - 没有应用任何样式。如果我没有为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">
我错过了哪个明显的错误?
答案 0 :(得分:21)
我一直在努力解决这个问题,并且认为我终于找到了可能存在的问题 - 也许它是一样的。
我在res\values
文件夹中定义了自定义主题,但在values-v11
和values-v14
文件夹中没有。我认为这使得在某些设备(特别是我正在测试的2个!)中,主题无法应用,因为它不存在。
我现在看到我的自定义主题中设置的属性(在应用程序级别应用)生效。
答案 1 :(得分:4)
我必须为每个<activity>
明确定义主题。
答案 2 :(得分:3)
According to this answer,似乎无法通过样式提供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.
我不确定为什么会这样,但可能有一种解决方法。 As this question suggests,您可以提供参考作为宽度和高度参数。
同样,我的经验是Android不能正确支持通过样式提供小部件维度。
答案 3 :(得分:0)
出于好奇。尝试将您的主题重命名为FooBar等其他内容。
在这里说明显而易见,但请确保您的按钮使用的是正确的样式。
答案 4 :(得分:0)
<style name="Theme" parent="android:style/Theme.Black">
应该说:
<style name="Theme" parent="@android:style/Theme.Black">
我觉得Lint或编译器会在运行应用程序之前咆哮你,但也许这会有所帮助。