style 样式资源定义了 UI 的格式和外观。 样式可以应用于单个视图(从布局文件中)或整个 Activity 或应用程序(从清单文件中)。


定义样式

样式在与指定布局的 XML 不同的 XML 资源中定义。 此 XML 文件位于项目的 res/values/ 目录下,并将 <resources> 作为样式文件必需的根节点。XML 文件的名称是任意的,但必须使用 .xml 扩展名。

您可以使用 <style> 标签为每个文件定义多个样式,但每个样式都有其唯一标识该样式的名称。Android 样式属性使用 <item> 标签设置,如下所示 −

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="CustomFontStyle"><item name="android:layout_width">fill_parent</item><item name="android:layout_height">wrap_content</item><item name="android:capitalize">characters</item><item name="android:typeface">monospace</item><item name="android:textSize">12pt</item><item name="android:textColor">#00FF00</item>/> </style>
</resources>

<item> 的值可以是关键字字符串、十六进制颜色、对其他资源类型的引用或其他值,具体取决于样式属性。


使用样式

一旦定义了样式,就可以在 XML 布局文件中使用 style 属性来使用它,如下所示 −

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/text_id"style="@style/CustomFontStyle"android:text="@string/hello_world" /></LinearLayout>

要了解与 Android Style 样式相关的概念,可以查看Style 样式演示示例。


样式继承

Android 支持样式继承的方式与网页设计中的层叠样式表非常相似。 您可以使用它从现有样式继承属性,然后仅定义要更改或添加的属性。

要实现自定义主题,请创建或编辑 MyAndroidApp/res/values/themes.xml 并添加以下内容 −

<resources>...<style name="MyCustomTheme" parent="android:style/Theme"><item name="android:textColorPrimary">#ffff0000</item></style>...
</resources>

在 AndroidManifest.xml 中,将主题应用于您想要设置样式的活动 −

<activityandroid:name="com.myapp.MyActivity"...android:theme="@style/MyCustomTheme"/>

您的新主题将应用于您的活动,并且文本现在是鲜红色。


将颜色应用于主题属性

然后,通过将 <item> 元素添加到自定义主题,您的颜色资源可以应用于某些主题属性,例如窗口背景和主要文本颜色。这些属性在您的 styles.xml 文件中定义。 例如,要将自定义颜色应用于窗口背景,请将以下两个 <item> 元素添加到您的自定义主题中,在 MyAndroidApp/res/values/styles.xml 文件中定义 −

<resources>...<style name="MyCustomTheme" ...><item name="android:windowBackground">@color/my_custom_color</item><item name="android:colorBackgroundCacheHint">@color/my_custom_color</item></style>...
</resources>


使用带有按钮的自定义 Nine-Patch

nine-patch drawable 是一种特殊的图像,可以在宽度和高度上进行缩放,同时保持其视觉完整性。 Nine-patches 是指定 Android 按钮外观的最常用方法,但可以使用任何可绘制类型。

Nine-Patch 按钮示例

创建 Nine-Patch 按钮的步骤

  • 将此位图另存为 /res/drawable/my_nine_patch.9.png
  • 定义新样式
  • 将新的按钮样式应用于自定义主题的 buttonStyle 属性

定义新样式

<resources>...<style name="MyCustomButton" parent="android:Widget.Button"><item name="android:background">@drawable/my_nine_patch</item></style>...
</resources>

应用主题

<resources>...<style name="MyCustomTheme" parent=...>...<item name="android:buttonStyle">@style/MyCustomButton</item></style>...
</resources>


Android 主题

您已经了解样式的概念,现在让我们尝试了解什么是主题。 主题只不过是应用于整个 Activity 或应用程序的 Android 样式,而不是单个 View。

因此,当将样式应用为主题时,Activity 或应用程序中的每个 View 都将应用它支持的每个样式属性。例如,您可以将相同的 CustomFontStyle 样式应用为 Activity 的主题,然后该 Activity 内的所有文本都将具有绿色等宽字体。

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

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

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

<activity android:theme="@style/CustomFontStyle">

Android定义了许多默认主题,您可以直接使用或使用 parent 属性继承它们,如下所示 −

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

要了解与 Android 主题相关的概念,您可以查看主题演示示例。


调色板样式

布局设计可以基于它们的颜色来实现,例如下面的设计是基于它们设计的颜色(蓝色)

上面的布局是基于style.xml文件设计的,放在res/values/

<resource><style name="AppTheme" parent="android:Theme.Material">    <item name ="android:color/primary">@color/primary</item><item name ="android:color/primaryDark">@color/primary_dark</item><item name ="android:colorAccent/primary">@color/accent</item></style>
<resource>

默认样式 & 主题

Android 平台提供了大量可以在应用程序中使用的样式和主题。您可以在 R.style 类中找到所有可用样式的参考。 要使用此处列出的样式,请将样式名称中的所有下划线替换为句点。 例如,您可以将 Theme_NoTitleBar 主题与 "@android:style/Theme.NoTitleBar" 一起应用。 你可以看到下面的 Android 样式和主题的源代码 −

  • Android 样式 (https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml)

  • Android 主题 (https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml)

​Android - 样式和主题相关推荐

  1. Android样式和主题背景

    简介: 本文将简单介绍Android样式与主题背景的相关内容 文章目录 前言 一.样式 二.主题背景 三.样式层次结构 四.创建并应用样式 五.自定义默认主题 六.添加特定于版本的样式 七.常见的主题 ...

  2. Android样式和主题背景·

    简介: 本文将简单介绍Android样式与主题背景的相关内容 文章目录 前言 一.样式 二.主题背景 三.样式层次结构 四.创建并应用样式 五.自定义默认主题 六.添加特定于版本的样式 七.常见的主题 ...

  3. android样式和主题

    样式(Style)是用来指定View或者window的外观和格式的一组属性集合.可以用来指定高度.内边距.字体颜色.字体大小.背景颜色等属性.样式定义在独立于布局文件的XML文件中.保证了内容和设计的 ...

  4. Android样式和主题(二):系统有哪些主题

    Android系统自带Theme 简介 Android系统在4.0之前没有设计可言,打开APP就是黑乎乎一片,这是最原始的Theme主题 在Android4.0有了Holo主题,Holo本身继承于Th ...

  5. android colorstatelist_Android 样式系统 | 主题背景属性

    在 Android 样式系统系列的前几篇文章中,我们介绍了主题背景与样式的区别,以及为什么说通过主题背景和公共主题背景属性来分解您要实现的内容是一个不错的主意,请点击链接回顾: Android 样式系 ...

  6. android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题

    50_样式与主题 android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题 2013/5/12 50_样式与主题 ----------------- android样式和主题(st ...

  7. Android从零开始:创建样式和主题

    作为Android开发人员,我们倾向于主要专注于应用程序的功能. 但是,仅凭功能性是远远不够的. 在如今托管了超过一百万个应用程序的Google Play上,外观与功能同等重要,甚至更多. 如果您觉得 ...

  8. Android 用户界面---样式和主题(Styles and Themes)(二)

    样式属性 理解了样式是如何定义的之后,就需要学习<item>元素都定义了那些有效的样式属性类型.你可能已经熟悉了像layout_width和textColor属性,但是还有更多的可以使用的 ...

  9. Android中样式及主题

    Android应用程序中不可避免的需要使用的样式和主题,样式指定一般指定View的高度.字体.字体颜色.背景,Android里的样荐定义在Style.xml文件里.主题也是一种样式,只不过它是应用在整 ...

最新文章

  1. 深入浅出ShellExecute
  2. 用 Python+openpose 实现抖音尬舞机
  3. JAVA面试常考系列六
  4. 解决,文件上传到 ftp 服务器,中文出现乱码问题
  5. 【2016年第4期】分布式协商:建立稳固分布式 大数据系统的基石
  6. 施一公:如何提高英文的科研写作能力
  7. 分布式应用CAP理论
  8. python读写磁盘扇区数据_[Win32] 直接读写磁盘扇区(磁盘绝对读写)
  9. Unity实现2D小游戏
  10. 复杂性思维中文第二版 十二、合作进化
  11. 一篇了解ERP与CRM、MRP、PLM、APS、MES、WMS、SRM的关系
  12. HTTP与Web安全总结
  13. RVMedia组件Crack,IP 摄像机接收视频
  14. python每个数都可由集合中的某两个数相加而得
  15. JS实现点赞变亮与取消点赞变灰样式
  16. C语言的文件读写操作
  17. 玩转苹果电脑:常用操作及快捷键
  18. Obsidian学习|捕获信息
  19. 市政管道修复的检查工作有哪些
  20. ChatGPT Something went wrong 处理

热门文章

  1. 网络安全学习资源汇总
  2. mysql中only_full_group_by 的意义
  3. 有什么可以制作方言配音的软件吗?
  4. 张小龙对微信思考最深刻的地方
  5. Django中间件介绍
  6. 魂武者服务器维护了怎么办,《魂武者》12月14日停机更新公告
  7. AE496 20个4K现代实用标注跟踪线条呼出文字标题指示线介绍注释动画ae模板
  8. 抱怨零基础转岗项目经理难,你一定不知道这个捷径
  9. 【无标题】DreamWeaver 2021 的下载安装教程
  10. ArkTS的Grid与GridItem(网格容器与网格容器中单项内容容器)