Android:使用一个主题自定义所有 UI 小部件

发布于 2024-12-11 01:45:41 字数 80 浏览 0 评论 0原文

如何通过创建一种样式来自定义应用程序中的所有小部件,并通过 AndroidManifest 中的 android:theme 将其应用到应用程序?

How can I customize all widgets in the application by creating one style and apply it to application through android:theme in AndroidManifest?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三生池水覆流年 2024-12-18 01:45:41

这是一个可能有帮助的示例(它可能无法逐字工作,因为我对其进行了调整以简化它,并展示了您可以做的其他一些事情)。

在 res\values\styles.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="TextColorForTheme">
    <item name="android:textColor">@color/red</item>
  </style>
</resources>

在 res\values\themes.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="myTheme" parent="@style/android:Theme">
    <item name="android:listSeparatorTextViewStyle">@style/TextColorForTheme</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowFrame">@null</item>
  </style>
</resources>

然后在 AndroidManifest.xml 中,设置整个应用程序或单个 Activity 来使用该主题:

  <application
    android:theme="@style/myTheme"
<snip>    
    <activity
      android:theme="@style/myTheme"
<snip>

或者,您可以在代码中设置主题您的 Java 活动:

  @Override
  public void onCreate(Bundle bundle)
  {
    super.onCreate(bundle);
    setTheme(R.style.myTheme);
<snip>

Here's an example that might help (it might not work verbatim as I've tweaked it to simplify it, and to showcase some of the other things you can do).

In res\values\styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="TextColorForTheme">
    <item name="android:textColor">@color/red</item>
  </style>
</resources>

In res\values\themes.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="myTheme" parent="@style/android:Theme">
    <item name="android:listSeparatorTextViewStyle">@style/TextColorForTheme</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowFrame">@null</item>
  </style>
</resources>

Then in your AndroidManifest.xml, set either the whole application, or individual Activities to use that theme:

  <application
    android:theme="@style/myTheme"
<snip>    
    <activity
      android:theme="@style/myTheme"
<snip>

Alternatively, you can set the theme in the code for your Java Activity:

  @Override
  public void onCreate(Bundle bundle)
  {
    super.onCreate(bundle);
    setTheme(R.style.myTheme);
<snip>
岁月苍老的讽刺 2024-12-18 01:45:41

您无法通过仅创建一种样式来做到这一点。主题本质上是一种元样式,它定义了每个可用的不同小部件的默认样式。您将首先创建一个主题(它本身就是一种样式),其父主题是现有系统主题之一,并为您希望从基本主题更改的每个小部件设置默认样式属性。例如,如果您想在主题中将不同的按钮样式设置为默认样式,则可以将以下内容添加到主题定义中:

<item name="android:buttonStyle">@style/MyButtonStyle</item>

请参阅 http://developer.android.com/guide/topics/ui/themes.html 了解更多信息。

You won't be able to do this by creating just one style. A theme is in essence a meta-style that defines the default styles for each of the different widgets available. You will start by creating a theme (which is itself a style) with a parent of one of the existing system themes and setting the default style attributes for each widget you wish to change from the base theme. For example, if you had a different button style that you wanted to set as default in your theme, you might add the following to your theme definition:

<item name="android:buttonStyle">@style/MyButtonStyle</item>

See http://developer.android.com/guide/topics/ui/themes.html for more info.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文