9.Android中的样式、主题、字符串资源、颜色资源

样式和主题

  Android系统中包含了很多样式和主题资源,这些样式和主题用于定义界面上的布局风格。样式是针对某个View,例如TextView和Button等控件;主题针对整个Activity界面或整个应用程序

样式

  样式(style)是包含一种或多种控件的属性集合,可以指定控件高度、宽度、字体大小及颜色等。样式在XML资源文件中定义,并且可以继承、复用等。方便统一管理并减少代码量
  创建一个样式,首先找到res\values\style目录下styles.xml文件
在这里插入图片描述
  打开可以看到根标签和定义样式的<style>标签,它包含多个来声明样式名称和属性。
在这里插入图片描述
  <style>标签中的代码是系统自带的样式,<style>标签内包含多个<item>来声明样式名称和属性,name属性是样式名称(类似于id属性),parent属性表示继承某个样式,通过<item>标签以键值对的形式定义属性和属性值。
  只要把文件创建在values目录下并以“.xml”结束,文件结构代码相同,就可以自己创建样式文件,下面在系统自带的styles.xml文件中自定义属性
  ①自定义一个用于TextView控件的属性

  <!-- 1.设置自定义style属性:宽、高、字体大小、所在位置 -->
  <style name="textview">
      <item name="android:layout_width">wrap_content</item>
      <item name="android:layout_height">wrap_content</item>
      <item name="android:textSize">20sp</item>
      <item name="android:layout_gravity">center</item>
  </style>

在这里插入图片描述

  ②在布局文件中定义控件,设置style属性

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- 2.创建TextView,设置style属性,链接自定义属性 -->
    <TextView
        style="@style/textview"
        android:text="文本一" />

    <TextView
        style="@style/textview"
        android:text="文本二" />

    <TextView
        style="@style/textview"
        android:text="文本三" />
</LinearLayout>

  ③运行结果
在这里插入图片描述

主题

  主题(theme)是应用到整个Activity和Application的样式,而不只应用到单个视图。当设置好主题后,Activity或整个程序中的视图都将使用主题中的样式属性。当主题和样式中的属性发生冲突时,样式的优先级要高于主题。主题和样式的代码结构是一样的,不同处在于引用方式,主题要在AndroidManifest.xml文件中引用
在这里插入图片描述
  在styles.xml文件中定义一个背景颜色的主题,在定义时要用parent属性去继承Theme.APPCompat.Light.DarkActionBar来保证它的兼容性,否则运行时会出现异常
  ①在styles.xml文件中定义属性

  <!-- 1.自定义样式 -->
  <style name="background_blue" parent="Theme.AppCompat.Light.DarkActionBar">
      <!--设置主题背景颜色:蓝色-->
      <item name="android:background">#00BFFF</item>
  </style>

在这里插入图片描述

  ②在AndroidManifest.xml文件中定义android:theme属性,引用自定义的属性

  android:theme="@style/background_blue"

在这里插入图片描述

  ③运行结果
在这里插入图片描述

字符串资源

  每个项目在res/values目录下都包含一个默认字符串资源文件strings.xml,打开可以看到已经添加了默认的字符串资源
在这里插入图片描述
  可以自己添加字符串资源
  ①定义字符串资源

	<!--定义字符串资源-->
	<resources>
	    <string name="app_name">My Application</string>
	
	    <string name="textview_name">姓名</string>
	    <string name="textview_age">年龄</string>
	</resources>

  ②引用

	<?xml version="1.0" encoding="utf-8"?>
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    android:orientation="vertical">
		
		<!--定义组件,引用资源-->
	    <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="@string/textview_name"
	        android:textSize="20sp" />
	
	    <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="@string/textview_age"
	        android:textSize="20sp" />
	</LinearLayout>

  ③运行结果
在这里插入图片描述

  为什么不用android:text属性,非要这么麻烦去定义再去引用?

  ①这是官方规范的字符串资源定义方法
  ②当程序开发需要国际化时,布局中所有的资源文件只能通过amdroid:text="@string/XXX"这种方式才能生效

颜色资源

  颜色资源在res/values目录下的colors.xml文件中定义,与字符串资源定义类似
在这里插入图片描述
  第一行,version="1.0"表示xml文件的版本,encoding="utf-8"表示xml文件的编码格式;第二行在<resource>标签中定义,以<color>标签开头,定义name属性相当于id,在<color>标签中定义RGB颜色值表示颜色
  自定义颜色属性:
  ①在颜色资源文件中定义

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#6200EE</color>
    <color name="colorPrimaryDark">#3700B3</color>
    <color name="colorAccent">#03DAC5</color>

    <!-- 1.自定义颜色资源 -->
    <color name="blue">#0000FF</color>
    <color name="red">#FF0000</color>
    <color name="black">#000000</color>
</resources>

在这里插入图片描述

  ②在布局文件中引用颜色资源

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 2.引用颜色资源 -->
    <TextView
        style="@style/textview"
        android:text="文本框一"
        android:textColor="@color/blue" />

    <TextView
        style="@style/textview"
        android:text="文本框二"
        android:textColor="@color/red" />

    <TextView
        style="@style/textview"
        android:text="文本框三"
        android:textColor="@color/black" />
</LinearLayout>

  ③运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值