Android样式和主题 Android事件处理 Android自定义组件 一个 风格 资源定义的格式,并寻找一个UI。样式可以应用于单个视图(从布局文件中)或整个活动或应用程序(从清单文件中)。 定义样式 样式在XML资源中定义,该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布局文件中使用它,如下所示 <?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" > <TextView android:id="@+id/text_id" style="@style/CustomFontStyle" android:text="@string/hello_world" /> </LinearLayout> 要了解与Android 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中,将主题应用于您想要样式的活动 <activity android:name="com.myapp.MyActivity" ... android:theme="@style/MyCustomTheme" /> 您的新主题将应用于您的活动,文字现在呈现鲜红色。 将颜色应用于主题属性 然后,通过将元素添加到自定义主题,可以将颜色资源应用于某些主题属性,例如窗口背景和主要文本颜色。这些属性在styles.xml文件中定义。例如,要将自定义颜色应用于窗口背景,请将以下两个元素添加到自定义主题中,在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> 使用带按钮的自定义九个补丁 九贴片可绘制是一种特殊的图像,可以在宽度和高度上进行缩放,同时保持其视觉完整性。尽管可以使用任何可绘制类型,但九个补丁是指定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主题 希望你理解Style的概念,所以现在让我们试着去理解什么是 主题。主题只是应用于整个Activity或应用程序的Android样式,而不是单个View。 因此,当样式应用为主题时,活动或应用程序中的每个 视图 都将应用它支持的每个样式属性。例如,您可以将相同的 CustomFontStyle 样式应用为Activity的主题,然后该 Activity中的 所有文本都将具有绿色等宽字体。 要为应用程序的所有活动设置主题,请打开 AndroidManifest.xml 文件并编辑 <application>标记以包含带有样式名称的 android:theme 属性。例如 - <application android:theme="@style/CustomFontStyle"> 但是,如果您希望将主题应用于应用程序中的一个Activity,则仅将android:theme属性添加到<activity>标记。例如 - <activity android:theme="@style/CustomFontStyle"> Android定义了许多默认主题,您可以直接使用它们或使用 父 属性继承它们,如下所示 - <style name="CustomTheme" parent="android:Theme.Light"> ... </style> 要了解与AndroidTheme相关的概念,您可以查看主题演示示例。 设置调色板的样式 布局设计可以基于它们基于颜色实现,例如,下面的设计是基于它们设计的颜色(蓝色) 上面的布局是基于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样式(styles.xml): https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml Android主题(themes.xml): https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml Android事件处理 Android自定义组件