5

他们在这里写道:

要将样式定义应用为主题,您必须将样式应用于 Android 清单中的 Activity 或应用程序。当您这样做时,Activity 或应用程序中的每个 View 都将应用它支持的每个属性。例如,如果您将前面示例中的 CodeFont 样式应用于 Activity,则所有支持文本样式属性的 View 元素都将应用它们。

那么,当我将 TextColor 设置为 Red 时,所有带有 Text 的元素都会变为红色吗?没有像 CSS 样式表中那样强大的说明符吗?我只是看到样式 ( style="@style/CodeFont") 的概念是可行的。

4

2 回答 2

3

在回复您的评论时,您可能会发现您在该物业中寻找的东西textAppearance

在此处打开themes.xml 文件:
https ://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/res/res/values/themes.xml

如果您对 textAppearance 进行查找,您会注意到各种条目,例如:

<style name="Theme">
    <item name="textAppearanceButton">@android:style/TextAppearance.Widget.Button</item>
    ...
    <item name="panelTextAppearance">?android:attr/textAppearanceInverse</item>
    ...

这允许您在某种程度上为整个应用程序中的组件设置样式,如 Maragues 示例所示。

因此,虽然不可能完全控制列表视图、滚动视图等所有子元素的样式,但对控制某些基于文本的组件(例如 TextView 和或按钮)的样式的支持有限。

于 2010-11-05T15:25:24.877 回答
2

如果您在引用的文本下方阅读:

要为应用程序的所有活动设置主题,请打开 AndroidManifest.xml 文件并编辑标签以包含带有样式名称的 android:theme 属性

如果您希望将主题应用于应用程序中的一个 Activity,则将 android:theme 属性添加到标签中。

稍后,它描述了如何继承和覆盖属性,就像 CSS 一样:

如果您喜欢某个主题,但想对其进行调整,只需将该主题添加为自定义主题的父级即可。例如,您可以修改传统的对话框主题以使用您自己的背景图像,如下所示:

<style name="CustomTextView" parent="@android:style/Widget.TextView">
    <item name="android:background">@drawable/custom_background</item>
</style>

然后,从 CustomTextView 中插入

<style name="CustomTextView.RedText">
   <item name="android:textColor">@color/red</item> 
</style>

设计 XML 布局后,您可以继承主题并覆盖属性

<TextView
    android:id="@+id/example"

    style="@style/CustomTextView.RedText"

    android:textColor="@color/green" />

我认为您应该再次阅读您自己链接的页面,这很好解释:)

于 2010-09-20T14:17:53.950 回答