【问题标题】:How to use Holo.Light theme, and fall back to 'Light' on pre-honeycomb devices?如何使用 Holo.Light 主题,并在预蜂窝设备上回退到“Light”?
【发布时间】:2012-03-29 17:06:53
【问题描述】:

我想在支持它的设备上使用Holo.Light 主题,并在其他设备上回退到常规的Light 主题。

目前,在 3.0+ 上引用 Holo.Light 可以正常工作,但较旧的 API 只是恢复为默认的“黑暗”主题。我可以通过样式继承实现我想要的吗?

【问题讨论】:

    标签: android android-4.0-ice-cream-sandwich android-theme android-3.0-honeycomb


    【解决方案1】:

    您必须创建一个自定义主题并将其保存在某些目录中才能最终将此主题设置为应用程序的默认主题

    首先,在值中添加一个像这样的主题.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="MyAppTheme" parent="@android:style/Theme.Light.NoTitleBar">
            <!-- Any customizations for your app running on pre-3.0 devices here -->
        </style>
    </resources> 
    

    然后,在 res 目录下创建一个名为“values-v11”(Android 3.0+)的目录,并放入一个像这样的themes.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light">
            <!-- Any customizations for your app running on 3.0+ devices here -->
        </style>
    </resources>
    

    最后在res目录下创建一个名为“values-v14”(Android 4.0+)的目录,并创建一个themes.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="MyAppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
            <!-- Any customizations for your app running on 4.0+ devices here -->
        </style>
    </resources>
    

    使用 DeviceDefault,您的应用在任何公司(HTC 三星...)的任何设备上都看起来完美,为 Android 4 添加了创建的自定义主题

    编辑:三星的界面 (TouchWiz) 不尊重此功能,并且应用程序在三星的设备上会非常难看。最好把 Holo 主题放在 :(

    终于在你的 manifest.xml 中

     <application
            ...
            android:theme="@style/MyAppTheme">
    

    【讨论】:

    • @Aracem,“非常丑陋”是什么意思?它会使用旧的轻主题还是更糟?
    • 我的意思是,如果您在某些三星设备中设置主题DeviceDefault,界面就像“未完成”或空白。重要的是,不知道是不是所有安卓4.0+的三星设备都有这个bug!
    • “计算机科学中的所有问题都可以通过另一个间接层次来解决”:-)
    • 我确认三星的 TouchWiz 不适用于 Theme.DeviceDefault。在 Galaxy Note 上,我的对话框显示为黑色文本和深色背景(几乎无法阅读)。此外,对话框后面的应用程序完全是白色的。
    • 我实际上无法让它工作。我不知道我错过了什么。我已经按照这些确切的说明进行操作,但它没有改变任何东西。值得一提的是,我正在将 Phonegap 与本机对话框一起使用。它显示在一个看起来 5 岁的丑陋黑色对话框中:/
    【解决方案2】:

    您也可以简单地将背景设置为白色,然后将所有其他小部件设置为黑色,如下所示:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        **android:background="#ffffff"
        android:orientation="vertical" >
    
    <TextView
        android:id="@+id/tvText"
        android:text="@string/text"
        **android:textColor="#000000"
        android:textSize="12dp" />
    

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多