样式是针对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,默认会自动填充铺满:

最新文章

  1. 图片垂直居中 和 float
  2. Ubuntu 远程登录服务器--ssh的安装和配置
  3. Java观察者模式(Observer模式)
  4. Oracle-学习笔记(==》集合函数与分组四)
  5. Mysql增加主键或者更改表的列为主键的sql语句
  6. java中事件处理探究
  7. hdu Train Problem I(栈的简单应用)
  8. Asp.Netserver控件开发的Grid实现(三)列编辑器
  9. Ubuntu14.04安装完全分布式Hadoop1.2.1
  10. Appium (win7系统)环境搭建----完整版
  11. Linux下安装PostgreSQL 转载linux社区
  12. 批量录入快递地址-快宝地址服务(PHP代码示例)
  13. 【一天一道LeetCode】#46. Permutations
  14. ggsci: error while loading shared libraries: libnnz11.so
  15. luoguP1919 A*B Problem升级版 ntt
  16. 开通博客的第一天上传我的C#基础笔记。
  17. Confluence 6 针对站点维护使用只读模式
  18. 步步为营-104-Lambda语句
  19. json 中关于json数组跟json对象的区别
  20. 构造器初始化(static)

热门文章

  1. ORACLE基础之oracle锁(oracle lock mode)详解
  2. bayaim_linux_install_oracle_11g - 20181102
  3. MySQL 主从复制开启 GTID
  4. Mysql—日志文件系统
  5. 苹果手机Chrome浏览器显示input:disabled时字体颜色总是为浅灰色
  6. Linxu:磁盘分区
  7. index-css-添加类-移除类-toggleClass-attr
  8. Java中Class和单例类的作用与类成员的理解
  9. Anomaly Detection
  10. Tomca原理分析之责任链