【问题标题】:How do I use common UI styles in Android?如何在 Android 中使用常见的 UI 样式?
【发布时间】:2026-02-10 14:50:02
【问题描述】:

我正在编写我的小 Android 应用程序。我通过在清单中的活动上设置android:theme="@android:style/Theme.Dialog" 来弹出一个对话框控件,这是一个不错的非全屏圆角对话框。这一切都如我所料。然而,它只是一个单调、灰色标题的对话框,如下图所示:

然而,我注意到很多应用程序在弹出对话框时都有一个漂亮的蓝色主题标题,如此屏幕截图所示。

我认为这个主题是一些常见的主题,因为它出现在很多不同的应用程序中。我认为它是操作系统内置的东西。 (我的手机是 Froyo 官方版本的 Captivate)。当然,它可能是每个开发人员自己重新编码的东西,但我对此表示怀疑。

假设这是一个常见的主题,我该如何在我的应用程序中使用它?我需要对我的活动进行哪些更改才能使用该主题?

提前致谢!

【问题讨论】:

    标签: android android-activity themes


    【解决方案1】:

    您可以将活动设置为使用默认主题,例如 Theme.Black。有默认主题,它们采用 R.style - 虽然我不确定哪些适用于哪些平台(即我认为全息主题适用于 3.0 及更高版本...

    http://developer.android.com/reference/android/R.style.html

    请参阅此处http://developer.android.com/guide/topics/ui/themes.html 以定义您自己的自定义主题,并一直向下滚动以使用“平台样式”和主题。

    【讨论】:

    • 那么,如果你想要两种样式的一些组件怎么办;你能以某种方式将它们“或”在一起吗?或者您是否会简单地定义您自己的自定义样式,继承自您想要继承的“更大”主题,然后根据第二个链接的“定义样式”部分进行调整?
    • 我会定义我自己的风格,继承最接近匹配的预定义。您可以根据需要一次在单个组件上设置一个主题,但会很麻烦,并且可能会导致外观和感觉不一致。
    • 这看起来像是我需要做的我猜......可能就像这个人经常出现的那样实现:londatiga.net/it/how-to-create-custom-window-title-in-android。感谢指导!
    【解决方案2】:

    相当杂乱(似乎没有很好的参考),但平台样式定义在 \platforms\android-\data\res\values\styles.xml 和 \platforms\android-\data \res\values\themes.xml。您可以挖掘这些并找出编译时可用的主题/样式 ID。

    除此之外,它实际上只是反复试验。

    【讨论】:

      【解决方案3】:

      要创建对话框,您需要扩展对话框类。要拥有一个漂亮的标题栏,您可以使用:

      requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
      

      并拥有自己的自定义标题。

      有一个标题使用:

      setTitle("MyTitle");
      

      您还可以为标题分配自定义视图。

      【讨论】:

      • 我实际上想将此样式应用于将成为我的应用程序主要活动的活动。本质上,我希望我的窗口模拟主屏幕上“添加快捷方式”对话框的外观。 Dialog 类看起来需要从另一个活动中启动?从我从这个 doc-url 中可以看出,它似乎实际上并不是一项活动:developer.android.com/reference/android/app/Dialog.html