标签干扰应用程序和活动主题

时间:2011-04-29 08:15:11

标签: android tabs themes

我们正在开发一个具有多个不同选项卡的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>

仅启动特定活动,并且确实具有适当的主题。

我的问题是,为什么?我们认为它与选项卡有关,因为只启动一个活动就可以启用主题。我们需要做些什么才能让标签一起工作?

1 个答案:

答案 0 :(得分:1)

如果您将主应用程序主题改为android:theme="@android:style/Theme.NoTitleBar"并使用自定义控件样式,那么您应该使用您的首选项扩展该主题:

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

此行将采用父主题的样式为recapmain,在内部您可以编写自己的首选项(正如您对buttonStyletextViewStyle所拥有的那样)。

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>