1.Theme主题

1.1.Theme主题作用范围

Theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)和Activity的主题;主题是不能应用在某一个单独的View中;或者说Theme是用来设置应用全局主题风格的,对整个应用或某个Activity存在影响。

1.2.Theme主题的定义

在AS中res/values/style.xml中定义,例如新建项目AS自动创建的Theme,是系统提供;

<!-- 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>

Android系统提供的主题在:..\platforms\android-29\data\res\values

常见的系统主题:

android:theme="@android:style/Theme.Dialog"   将一个Activity显示为能话框模式

android:theme="@android:style/Theme.NoTitleBar"  不显示应用程序标题栏

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"  不显示应用程序标题栏,并全屏

android:theme="Theme.Light"  背景为白色

android:theme="Theme.Light.NoTitleBar"  白色背景并无标题栏

android:theme="Theme.Light.NoTitleBar.Fullscreen"  白色背景,无标题栏,全屏

android:theme="Theme.Black"  背景黑色

android:theme="Theme.Black.NoTitleBar"  黑色背景并无标题栏

android:theme="Theme.Black.NoTitleBar.Fullscreen"    黑色背景,无标题栏,全屏

android:theme="Theme.Wallpaper"  用系统桌面为应用程序背景

android:theme="Theme.Wallpaper.NoTitleBar"  用系统桌面为应用程序背景,且无标题栏

android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen"  用系统桌面为应用程序背景,无标题栏,全屏

android:theme="Translucent"  半透明

android:theme="Theme.Translucent.NoTitleBar" 半透明、无标题栏

android:theme="Theme.Translucent.NoTitleBar.Fullscreen" 半透明、无标题栏、全屏

android:theme=”Theme.Panel” 半透明,无标题,全屏

android:theme=”Theme.Light.Panel”平板风格显示

常见主题集合中的item属性

<!-- 应用的主要色调,actionBar默认使用该颜色,Toolbar导航栏的底色 -->
    <item name="colorPrimary">@color/white</item>
    <!-- 应用的主要暗色调,statusBarColor 默认使用该颜色 -->
    <item name="colorPrimaryDark">@color/white</item>
    <!-- 一般控件的选中效果默认采用该颜色,如 CheckBox,RadioButton,SwitchCompat,ProcessBar等-->
    <item name="colorAccent">@color/colorAccent</item>
 
    <!-- 状态栏、顶部导航栏 相关-->
    <!-- status bar color -->
    <item name="android:statusBarColor">#00000000</item>
    <!-- activity 是否能在status bar 底部绘制 -->
    <item name="android:windowOverscan">true</item>
    <!-- 让status bar透明,相当于statusBarColor=transparent + windowOverscan=true -->
    <item name="android:windowTranslucentStatus">true</item>
    <!-- 改变status bar 文字颜色, true黑色, false白色,API23可用-->
    <item name="android:windowLightStatusBar">true</item>
    <!-- 全屏显示,隐藏状态栏、导航栏、底部导航栏 -->
    <item name="android:windowFullscreen">true</item>
    <!-- hide title bar -->
    <item name="windowNoTitle">true</item>
    <!-- 底部虚拟导航栏颜色 -->
    <item name="android:navigationBarColor">#E91E63</item>
    <!-- 让底部导航栏变半透明灰色,覆盖在Activity之上(默认false,activity会居于底部导航栏顶部),如果设为true,navigationBarColor 失效 -->
    <item name="android:windowTranslucentNavigation">true</item>
 
    <!-- WindowBackground,可以设置@drawable,颜色引用(@color),不能设置颜色值(#fffffff),
    Window区域说明:Window涵盖整个屏幕显示区域,包括StatusBar的区域。当windowOverscan=false时,window的区域比Activity多出StatusBar,当windowOverscan=true时,window区域与Activity相同-->
    <item name="android:windowBackground">@drawable/ic_launcher_background</item>
    <!--<item name="android:windowBackground">@color/light_purple</item>-->
 
    <!-- 控件相关 -->
    <!-- button 文字是否全部大写(系统默认开)-->
    <item name="android:textAllCaps">false</item>
 
    <!-- 默认 Button,TextView的文字颜色 -->
    <item name="android:textColor">#B0C4DE</item>
    <!-- 默认 EditView 输入框字体的颜色 -->
    <item name="android:editTextColor">#E6E6FA</item>
    <!-- RadioButton checkbox等控件的文字 -->
    <item name="android:textColorPrimaryDisableOnly">#1C71A9</item>
    <!-- 应用的主要文字颜色,actionBar的标题文字默认使用该颜色 -->
    <item name="android:textColorPrimary">#FFFFFF</item>
    <!-- 辅助的文字颜色,一般比textColorPrimary的颜色弱一点,用于一些弱化的表示 -->
    <item name="android:textColorSecondary">#C1C1C1</item>
    <!-- 控件选中时的颜色,默认使用colorAccent -->
    <item name="android:colorControlActivated">#FF7F50</item>
    <!-- 控件按压时的色调-->
    <item name="android:colorControlHighlight">#FF00FF</item>
    <!-- CheckBox,RadioButton,SwitchCompat等默认状态的颜色 -->
    <item name="android:colorControlNormal">#FFD700</item>
    <!-- 默认按钮的背景颜色 -->
    <item name="android:colorButtonNormal">#1C71A9</item>
 
    <!-- 【无效】 在theme中设置Activity的属性无效, 请到AndroidManifest中Activity标签下设置 -->
    <item name="android:launchMode">singleTop</item>
    <item name="android:screenOrientation">landscape</item>

常见style元素属性标识

1.3.Theme主题的使用

在AndroidManifest.xml为应用或者Activity设置theme,通过android:theme = "@style/theme主题名"来引入自己的主题;

<application
        android:name=".MyApp"
        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">
        <activity
            android:name=".MainActivity"
            android:theme="@style/AppTheme.Launcher"> //自定义的Theme
</application>

在Java代码中设置theme,注意在Activity的onCreate方法中的setContentView(R.layout.activity_main)之前设置;

setTheme(R.style.AppTheme);

自定义属性 res/values/attrs.xml(通过:定义 赋值  使用)

1.4.系统Theme

系统Theme路径:SDK路径\platforms\android-26\data\res\values\themes.xml

2.style样式

2.1.style样式的使用范围

style样式是针对窗体元素级别的或者说View级别的,改变指定控件或者Layout的样式;

2.2.style作用

抽取一些共同的属性定义到style中,可以省略重复的属性代码。

2.3.定义

res/values/style.xml中新建<style>标签,为此标签设置name属性,如下:

<style name="myButtonStyle">
        <item name="android:height">?attr/myHeight</item>
        <item name="android:textColor">#0ff0f0</item>      <!--字体颜色-->
        <item name="android:textSize">15sp</item>          <!--字体大小-->
        <item name="android:layout_height">200dp</item>     <!--控件高度-->
        <item name="android:layout_width">match_parent</item>  <!--控件宽度-->
        <item name="android:background">#ff0000</item>         <!--背景色-->
    </style>

2.4.使用

在xml布局文件中


<Buttonandroid:id="@+id/btn_style_test"style="@style/myButtonStyle"/>

2.5.系统Style

SDK路径\platforms\android-26\data\res\values\styles.xml

3.区别

从Theme和style的作用范围可以看出他们的区别;如果一个应用使用了theme,同时应用下的view也使用了style,那么当theme与样式style发生冲突时,style有效,因为style的优先级高于theme;在R.attr定义中以window开头的一些属性只对theme有效。

4.相同点

两者的定义相同、继承方式也相同,都是在res/values/style.xml中定义;继承方式:. 继承(只能继承自定义)和parent继承;

5.相关

@符号:表明我们应用的资源是已经定义过并存在的,可以直接引用。
 ? 符号:表明我们引用的资源的值在当前的主题当中定义过。

Android中Theme主题和Style样式使用介绍总结相关推荐

  1. Android 中Theme主题使用

    Android 中Theme主题使用 android 中的主题颜色可以设置给Activity Dialog ,和someWeght. 合理使用主题能够减少一些代码达到更好的用户体验效果 (1)Andr ...

  2. Android笔记 theme主题

    Android中theme与style的定义没有区别 区别在于控制范围 theme范围更大 style用于控制view对象 theme用于控制Activity样式 1在res/values下定义the ...

  3. android 主题xml,Android中自定义主题风格theme.xml

    在Android中可以通过自定义主题风格方式来实现个性化以及复用,首先我们创建theme.xml主题文件,保存位置为工程的 res/values/theme.xml ,这里我们可以可以为主题起一个名称 ...

  4. Android风格与主题(style and theme)

    Android xml风格和主题文件的编写,是涉及到整个程序界面美观的因素之一.较好的应用风格和主题,可以实现美观而统一的界面,这就犹如Web开发中的CSS. Styles和Themes都是资源,存放 ...

  5. Android 风格与主题(style and theme)

    1.什么是Style,什么是Theme? Style 和 theme:是一个包含一种 或者 多种格式化 属性 的集合  ,并且 style和theme都是资源,存放在res/values 文件夹下 即 ...

  6. Android中的AsyncTask异步任务的简单介绍

    事件原由: 很多耗时的资源在安卓客户端加载时,必须要开启一个新的线程去操作维护,而如果直接在主线程中加载的话,客户端会直接报出异常,导致程序不能正常使用,而子线程无法直接更新UI,因此客户端提供了   ...

  7. Android中的主题Theme

    系统自带的Theme: android以及为我们定义好了一些theme,需要是我们直接可以拿来使用. 常用的Theme通常如下: android:theme="@android:style/ ...

  8. android 中xml文件的各种样式的学习

    http://keeganlee.me/post/android/20150916 代码规范演示: <!-- 方法一 --> <?xml version="1.0" ...

  9. android 焦点的作用,Android中的视图焦点Focus的详细介绍

    在非触摸屏设备中接收事件和处理响应的控件是具有焦点(Focused)的控件.一个窗口中一个时间内只能有一个具有焦点的控件.在早期具有滚轮设备的android系统中以及现在的智能TV电视应用中视图的焦点 ...

最新文章

  1. 【Linux驱动】ThinkPad笔记本wifi模块rtl8821ce在ubuntu16.04的驱动(默认没有)
  2. 七大Github机器学习热门项目
  3. CUDA占用率计算方法
  4. C++ 实现 STL 标准库和算法(二)template 编程和迭代器粗解 实验楼笔记
  5. 安装java环境linux和windows
  6. 武汉疫情之后,中国即将发生的10大变化!(强烈推荐)
  7. 信用评分卡—信贷准入A卡(逻辑回归)
  8. 牛客19115 选择颜色
  9. 一调计算机专业综合理论试卷,一调计算机专业综合理论试卷(盐城)(新编)
  10. springcloud服务调用以及整合Hystrix
  11. 微软集成开发者工具到 Visual Studio 中,Web 工具迎来“大换血”?
  12. Bootstrap Table API 中文版 说明文档
  13. python如何下载包_怎么在python中下载包
  14. flume系列之:清理HDFS上的tmp文件,把.gz.tmp文件变为.gz文件
  15. 利用手机模拟器进行apk抓包分析
  16. 大数据Hadoop之——Cloudera Hadoop(CM 6.3.1+CDH 6.3.2环境部署)
  17. 如何学计算机打字,电脑如何快速学会打字
  18. 年金系数用计算机怎么算,年金系数是什么?怎么计算?
  19. SpringBoot对接微信公众号,持续更新
  20. APS高级计划排程系统,工厂各部门实施前后有哪些区别?

热门文章

  1. 软开企服开源的JVS开发套件(V2.1.3)产品说明书
  2. 学java常忘怎么办_经常忘记事情怎么办?一定要学会这个方法,既简单又实用!...
  3. Mothur6进阶_Mothur扩增子基因序列分析_基于系统型phylogeny的多样性指数分析
  4. 共享在阿里云ecs上安装自定义iso的方法
  5. ThreadPool学习笔记
  6. java item.getparentnode(),javascript中parentNode,childNodes,children的应用详解
  7. window下编译32/64位库文件
  8. 关于泛型的super与extends 的set方法
  9. 伊吹萃香_纪中2556_spfa
  10. cellpadding_在CSS中设置cellpadding和cellspacing