Android 主题、样式
2024-08-23 08:00:37
样式是针对View的,比如TextView、Button等控件,主题是针对Activity、整个APP的。
样式、主题是多种属性的集合,类似于网页中的CSS样式,可以让设计与内容分离,并且可以继承、复用,减少了代码量,方便维护、统一管理。
样式、主题都是在 res -> values -> styles.xml 中定义的:
<resources> <!--这个是基础主题,自带的-->
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style> <!-- 一个style就是一个样式/主题 -->
<style name="style1">
<!-- 一个item表示一个属性,属性值不加引号 -->
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
</style> <!-- 样式、主题可以继承-->
<style name="style2" parent="style1">
<item name="android:textColor">#FF0000</item>
<item name="android:textSize">20sp</item>
</style> <!--所有自定义的主题都要继承 Theme.AppCompat.Light.DarkActionBar(不会写可以看最上面的那个style),以保证兼容性 -->
<style name="theme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:background">@drawable/a</item>
</style> </resources>
然后就可以在布局的xml文件的某个View中用style属性引用样式:
<TextView
style="@style/style1"
android:text="hello world!" />
在清单文件AndroidManifest.xml中使用theme属性引用主题:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication"> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"> <!-- 整个APP的主题--> <activity
android:name=".MainActivity"
android:theme="@style/theme"> <!--这个Activity的主题 -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application> </manifest>
如果背景图片不能占满该控件/Activity,默认会自动填充铺满:
最新文章
- 图片垂直居中 和 float
- Ubuntu 远程登录服务器--ssh的安装和配置
- Java观察者模式(Observer模式)
- Oracle-学习笔记(==》集合函数与分组四)
- Mysql增加主键或者更改表的列为主键的sql语句
- java中事件处理探究
- hdu Train Problem I(栈的简单应用)
- Asp.Netserver控件开发的Grid实现(三)列编辑器
- Ubuntu14.04安装完全分布式Hadoop1.2.1
- Appium (win7系统)环境搭建----完整版
- Linux下安装PostgreSQL 转载linux社区
- 批量录入快递地址-快宝地址服务(PHP代码示例)
- 【一天一道LeetCode】#46. Permutations
- ggsci: error while loading shared libraries: libnnz11.so
- luoguP1919 A*B Problem升级版 ntt
- 开通博客的第一天上传我的C#基础笔记。
- Confluence 6 针对站点维护使用只读模式
- 步步为营-104-Lambda语句
- json 中关于json数组跟json对象的区别
- 构造器初始化(static)