我们正在开发一个具有多个不同选项卡的Android应用程序。我们一直在尝试将一个主题应用于整个应用程序,我们也尝试将主题应用于特定的活动。都没有任何影响。
我有这个样式文件:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="recapmain">
<item name="android:buttonStyle">@style/recapButton</item>
<item name="android:textViewStyle">@style/recapText</item>
</style>
<style name="recapButton" parent="android:style/Widget.Button">
<item name="android:textSize">30sp</item>
<item name="android:background">#FF0000</item>
</style>
<style name="recapText">
<item name="android:textSize">30dip</item>
<item name="android:textColor">#FFFFFF</item>
</style>
</resources>
清单文件中的应用程序标记如下所示:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/recapmain">
<activity android:name="appname"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这不起作用。应用程序根本不对主题做出反应。如果我设置一个特定的视图来使用其中一种样式,那么它的效果非常好。所以,我可以在xml文件中为活动执行此操作:
<Button
android:id="@+id/OverviewButtonYears"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/years"
android:onClick="years"
style="@style/recapButton"
/>
这将适当地设置按钮的样式。
我们也尝试将主题应用于特定的活动代码,但没有结果。
现在, 的工作原理是从应用程序代码中删除intent-filter-tag,并将其放入活动代码中,如下所示:
<activity android:name=".PolicyTab" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
仅启动特定活动,并且确实具有适当的主题。
我的问题是,为什么?我们认为它与选项卡有关,因为只启动一个活动就可以启用主题。我们需要做些什么才能让与标签一起工作?
答案 0 :(得分:1)
如果您将主应用程序主题改为android:theme="@android:style/Theme.NoTitleBar"
并使用自定义控件样式,那么您应该使用您的首选项扩展该主题:
<style name="recapmain" parent="@android:style/Theme.NoTitleBar">
此行将采用父主题的样式为recapmain
,在内部您可以编写自己的首选项(正如您对buttonStyle
和textViewStyle
所拥有的那样)。
在androidManifest.xml
内,您将应用主题设置为自定义样式:
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@style/recapmain">
<强>更新强>
您的styles.xml应包含:
<style name="recapmain" parent="@android:style/Theme.NoTitleBar">
<item name="android:buttonStyle">@style/recapButton</item>
<item name="android:textViewStyle">@style/recapText</item>
</style>
<style name="recapButton" parent="android:style/Widget.Button">
<item name="android:textSize">30sp</item>
<item name="android:background">#FF0000</item>
</style>
<style name="recapText" parent="android:style/Widget.TextView">
<item name="android:textSize">30dip</item>
<item name="android:textColor">#FFFFFF</item>
</style>