gpt4 book ai didi

Android 风格和主题的区别

转载 作者:行者123 更新时间:2023-12-04 18:00:57 25 4
gpt4 key购买 nike

根据文档:主题是应用于整个 Activity 或应用程序的样式,而不是单个 View

但是当我在 xml 中将主题添加到我的 View (一个 TextView )时,它被编译并工作了。我认为当我想添加到单个 View 时我需要使用“样式”。

<TextView
android:id="@+id/textView1"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/TestTheme"
android:textSize="25dp"
android:text="TextView" />

谁能给我解释一下?

最佳答案

样式 是指定 View 外观和格式的属性集合。样式可以指定高度、填充、字体颜色、字体大小、背景颜色等属性。

例如,通过使用样式,您可以采用这种布局 XML:

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#00FF00"
android:typeface="monospace"
android:text="@string/hello" />

然后把它变成这样:

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/CodeFont"
android:text="@string/hello" />

与样式相关的属性已从布局 XML 中删除,并放入名为 CodeFont 的样式定义中,然后使用 android:textAppearance 属性应用该样式。

要创建 CodeFont 样式,请将 XML 文件保存在项目的 res/values/目录中。这是一个例子:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">#00FF00</item>
<item name="android:typeface">monospace</item>
</style>
</resources>

此示例样式可以从 XML 布局中引用为 @style/CodeFont,如上面的 TextView 所示。 主题就是一种风格。唯一的区别是主题是应用于整个 Activity 或应用的样式,而不是单个 View 。

当样式作为主题应用时, Activity 或应用中的每个 View 都会应用它支持的每个样式属性。例如,如果您将相同的 CodeFont 样式应用为 Activity 的主题,则该 Activity 中的所有文本均以绿色等宽字体显示。

<resources>
<style name="AppTheme" parent="Theme.Material">
<item name="colorPrimary">#673AB7</item>
<item name="colorPrimaryDark">#512DA8</item>
<item name="colorAccent">#FF4081</item>
</style>
</resources>

下面的示例说明了使用引用为同一属性指定值:

<resources>
<style name="AppTheme" parent="Theme.Material">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
</resources>

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

<application android:theme="@style/CustomTheme">

如果您只想将主题应用于您应用中的一个 Activity ,请改为将 android:theme 属性添加到标记中。

正如 Android 提供其他内置资源一样,您可以使用许多预定义的主题,以避免自己编写它们。例如,您可以使用 Dialog 主题并让您的 Activity 看起来像一个对话框:

<activity android:theme="@android:style/Theme.Dialog">

或者,如果您希望背景透明,请使用半透明主题:

<activity android:theme="@android:style/Theme.Translucent">

关于Android 风格和主题的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35579648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com