2011-02-09 35 views
17

我有一个拒绝应用于活动的主题 - 没有应用任何样式。如果我不为<Button>提供layout_width/layout_height属性也得到一个运行时错误,表明没有被施加Button类。未设置Android主题

/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

我正在处理完全相同的问题。你确定你可以把主题放在单独的文件中吗?我试图设置主题为活动(而不是应用程序),我也尝试应用程序onStart - 没有运气... – katit 2011-05-24 18:00:01

+0

嗯。我认为我们有更大的问题。我试图从父=“android:Theme.Light.NoTitleBar.Fullscreen”继承,我得到了我的活动全屏。但我的按钮和ListView样式仍然没有应用..所以,它似乎是主题“应用”,但不是所有的内部项目 – katit 2011-05-24 18:19:23

回答

0

只是出于好奇。尝试将您的主题重命名为FooBar等其他内容。

要说明这里很明显,但要确保您的按钮是使用合适的款式。

3

我不得不明确定义主题为每<activity>

0

编辑:我不确定这是否只是一个错字,但是在您的主题中,您错误地引用了Android的Theme.Black样式。您的代码表示:

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

当它应该说:

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

我觉得像皮棉或编译器会在您树皮,运行应用程序之前,但也许这将有助于。

+1

只要你的XML文件在值文件夹中一切都应该没问题,文件的名称应该没有什么区别。 – 2012-09-25 15:02:14

2

According to this answer,似乎不可能通过样式提供layout_widthlayout_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不正确支持通过样式提供部件的尺寸。

20

我一直在为此付出努力,并认为我终于找到了可能是这个问题 - 也许它是一样的。

我曾在res\values文件夹中定义的自定义主题,但不能在values-v11values-v14文件夹。我认为这使得在某些设备(特别是我正在测试的2台设备!)中,主题无法应用,因为它不存在。

我现在看到在我的自定义主题中设置的属性(应用程序级别)生效。