【问题标题】:Dialog Theme.DeviceDefault forced对话框 Theme.DeviceDefault 强制
【发布时间】:2018-10-12 14:20:40
【问题描述】:

我正在制作一个对话框,我想在其中显示 EditTexts 和 Radio 按钮。

但主题不适用。根据 Layout Inspector,视图应用了正确的主题(显示为“强制”),但有“android:style/Theme.DeviceDefault()”,这也是“强制”的(如果那样的话,它显示在我的样式上方很重要)。

问题是,视图在不同的 API 上看起来不同,我猜这是由 DeviceDefault 引起的。我没有设置任何关于 DeviceDefault 的任何内容,但它适用于我的所有对话框。

知道如何关闭它吗?谢谢。

【问题讨论】:

  • 我现在遇到了同样的问题。我有卡片视图,它在布局检查器和模拟器上看起来是正确的,但在设备上由于某种原因它有一个黑暗的主题。
  • 你能分享你的代码吗?
  • @ErnestZamelczyk 分享适当的代码以便能够理解您的问题。

标签: android dialog styles themes


【解决方案1】:

每个 API 级别都有自己的默认主题,由于您在应用中使用默认主题,因此 android 会根据 API 级别调整主题,这在每个设备上都会有所不同。请记住,只有添加样式属性的元素才能获取指定的样式属性。子对象或子视图没有获取样式属性。如果您希望子视图继承样式,请改为应用带有 android:theme 属性的样式。

问题可能与您应用自己的主题的位置和方式有关。 您应该在 AndroidManifest.xml 文件中应用您的主题。如果您在application tagactivity tag 中应用您的主题,您的主题将涵盖应用程序的不同部分。没有任何代码,你所做的很难说。

您应该将您的主题应用到文件的以下部分之一。

覆盖整个应用程序

<manifest ... >
    <application android:theme="@style/Theme.AppCompat" ... >
    </application>
</manifest>

仅涵盖一项活动

<manifest ... >
    <application ... >
        <activity android:theme="@style/Theme.AppCompat.Light" ... >
        </activity>
    </application>
</manifest>

如果视图仅支持您在创建的样式中声明的某些属性,则它只会应用那些属性并忽略它不支持的属性。

如果要更改默认样式和颜色,可以在 styles.xml 文件中覆盖它们。在res/values/colors.xml 文件中搜索代表颜色值的项目名称并更改对应的值。

我希望这些信息能解决您的问题,但正如我所说,如果没有代码,这真的很难说。

【讨论】:

    【解决方案2】:

    关于 Android 中的 Theme.DeviceDefaul

    有许多适用于 Android 设备的主题。

    • 主题:Android 2.3 Gingerbread(10) 之前的最早版本的默认设置
    • Theme.Holo:来自 Android 3.0 Honeycomb (11)
    • Theme.Material:来自 Android 5.0 Lollipop (21)
    • Theme.DeviceDefault:来自 Android 4.0 Ice Cream Sandwich (14),可以由设备制造商自定义的主题。它代表了设备的原生外观。

    指定不同的主题:

    Android 的资源覆盖系统允许根据设备 API 级别指定样式,通过 Android Studio 将为您设置。

    例如 res/values-v11res/values-v21 中不同版本的样式。

    /res/values/styles.xml 应用于每个设备并作为基础:

    <resources>
        <style name="AppTheme" parent="android:Theme.Light"/>
    </resources>
    

    /res/values-v11/styles.xml 在所有 API 级别 11 及以上的设备(包括 21 及以上的设备)上加载:

    <resources>
        <style name="AppTheme" parent="android:Theme.Holo.Light"/>
    </resources>
    

    /res/values-v21/styles.xml 在所有 API 级别 21 及以上的设备上加载:

    <resources>
        <style name="AppTheme" parent="android:Theme.Material.Light"/>
    </resources>
    

    AndroidManifest.xml是自定义主题使用的地方。

    <application
        android:theme="@style/AppTheme"
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 2012-10-14
      • 2012-06-22
      • 1970-01-01
      相关资源
      最近更新 更多