欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

主题、样式

程序员文章站 2023-08-21 21:36:27
样式是针对View的,比如TextView、Button等控件,主题是针对Activity、整个APP的。 样式、主题是多种属性的集合,类似于网页中的CSS样式,可以让设计与内容分离,并且可以继承、复用,减少了代码量,方便维护、统一管理。 样式、主题都是在 res -> values -> styl ......

 

样式是针对view的,比如textview、button等控件,主题是针对activity、整个app的。

 

样式、主题是多种属性的集合,类似于网页中的css样式,可以让设计与内容分离,并且可以继承、复用,减少了代码量,方便维护、统一管理。

 

样式、主题都是在 res -> values -> styles.xml 中定义的:

 1 <resources>
 2 
 3     <!--这个是基础主题,自带的-->
 4     <!-- base application theme. -->
 5     <style name="apptheme" parent="theme.appcompat.light.darkactionbar">
 6         <!-- customize your theme here. -->
 7         <item name="colorprimary">@color/colorprimary</item>
 8         <item name="colorprimarydark">@color/colorprimarydark</item>
 9         <item name="coloraccent">@color/coloraccent</item>
10     </style>
11     
12     <!-- 一个style就是一个样式/主题 -->
13     <style name="style1">
14         <!-- 一个item表示一个属性,属性值不加引号 -->
15         <item name="android:layout_width">match_parent</item>
16         <item name="android:layout_height">wrap_content</item>
17     </style>
18     
19     <!-- 样式、主题可以继承-->
20     <style name="style2" parent="style1">
21         <item name="android:textcolor">#ff0000</item>
22         <item name="android:textsize">20sp</item>
23     </style>
24     
25     <!--所有自定义的主题都要继承 theme.appcompat.light.darkactionbar(不会写可以看最上面的那个style),以保证兼容性 -->
26     <style name="theme" parent="theme.appcompat.light.darkactionbar">
27         <item name="android:background">@drawable/a</item>        
28     </style>
29 
30 </resources>

 

然后就可以在布局的xml文件的某个view中用style属性引用样式:

1 <textview
2          style="@style/style1"
3          android:text="hello world!" />

 

在清单文件androidmanifest.xml中使用theme属性引用主题:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.myapplication">
 4 
 5     <application
 6         android:allowbackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:roundicon="@mipmap/ic_launcher_round"
10         android:supportsrtl="true"
11         android:theme="@style/apptheme">    <!-- 整个app的主题-->
12 
13         <activity
14             android:name=".mainactivity"
15             android:theme="@style/theme">   <!--这个activity的主题 -->
16             <intent-filter>
17                 <action android:name="android.intent.action.main" />
18                 <category android:name="android.intent.category.launcher" />
19             </intent-filter>
20         </activity>
21 
22     </application>
23 
24 </manifest>

 

 

 

 

如果背景图片不能占满该控件/activity,默认会自动填充铺满:

主题、样式