1

我有一个没有明确定义任何颜色的应用程序。该应用程序在我的手机上看起来与在我办公室周围的其他几部手机上看起来不同(我手机上应用程序顶部的标题栏是蓝色的白色字母,而在其他手机上它是灰色的白色字母)。我如何使它们都一样?是否像在我的应用程序中明确设置颜色一样简单?

4

3 回答 3

0

您需要将可用主题之一应用于您的应用程序。你可以做到AndroidManifest.xml,只需使用android:theme属性:

android:theme="@android:style/Theme.Holo"如果您想要深色主题或android:theme="@android:style/Theme.Holo.Light"想要浅色主题。

如果你使用把这个应用程序放在你的<activity>标签中,只有相应的活动会被样式化,如果你把它放在<application>标签中,样式将被应用到整个应用程序。

当然,你可以定义自己的风格styles.xml

<style name="AppTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@drawable/bg_window</item>
    <item name="android:windowActionBar">false</item>    
    <item name="android:windowNoTitle">true</item>
</style>

以下是 的示例AndroidManifest.xml

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    >

    <activity
        android:name=".Activity1"
        android:theme="@style/AppTheme2"
        />

    <activity
        android:name=".Activity2"
        />

在此示例中,AppTheme2将仅应用于Activity1,而AppTheme将应用于所有其他活动。

于 2013-01-15T15:58:11.347 回答
0

所有非您设计的按钮、文本视图和其他 UI 元素将根据所选主题更改其外观。如果您选择默认主题,所有 GUI 小部件的外观会因设备制造商、Android 版本等不同而有所不同。

您可以指定一个具体的主题,例如 Holo,但问题是它不适用于 3.0 之前的 Android 版本。您可以保留旧版本的默认主题,或者您可以使用此网站自己生成所有 Holo 风格的 GUI 元素:

http://android-holo-colors.com/

于 2013-01-15T16:00:49.690 回答
0

我手机上应用程序顶部的标题栏是蓝色的,带有白色字母,而在其他手机上,它是灰色的,带有白色字母

这是一些 OEM 定制框架的问题。它们覆盖了默认的 android 样式。我假设带有蓝色标题栏的设备是带有 TouchWiz 的三星设备,对吧?

我为了有一个一致的标题栏,你必须声明自己的主题:

<style name="AppTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@drawable/title_bar</item>
    <item name="android:windowTitleStyle">@style/WindowTitle</item>    
</style>

<style name="WindowTitle">
    <item name="android:singleLine">true</item>
    <item name="android:textAppearance">@style/TextAppearance.WindowTitle</item>
    <item name="android:shadowColor">#BB000000</item>
    <item name="android:shadowRadius">2.75</item>
</style>

原始title_bar 9 补丁。


这是您的问题的答案。但是,在我看来,您不应该使用标题栏,而应使用 ActionBar。您可以使用 ActionBarSherlock 来实现向后兼容性。

于 2013-01-15T16:10:24.570 回答