Android style(样式) 和 theme(主题) 属性

这篇具有很好参考价值的文章主要介绍了Android style(样式) 和 theme(主题) 属性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 定义

        样式和主题资源都可用于对Android UI组件进行“美化”,只要充分利用好这两个属性资源,我们可以开发出各种风格的应用界面。

        style 样式: 一个样式相当于多个格式的集合,其他UI组件通过style属性来指定样式,样式资源文件时放在/res/values/styles.xml目录下,其根元素为<resources...../> , 该元素内可包含多个<style..../>子元素,每个 <style.../>子元素定义一个样式。

<style..../>元素指定如下两个属性

        name : 指定样式的名称

        parent : 指定继承父类的样式:

<resources>
    <style name="system.theme.test" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

        theme 主题:与样式资源相似,主题资源的xml文件也是放在/res/values/themes.xml,  XML文件同样根元素为<resources...../>,同样使用<style..../>元素来定义主题

<resources>
    <style name="Theme.DeskClock.Settings">
        <!-- Attributes from androidx.appcompat.appcompat -->
        <item name="actionBarStyle">@style/Widget.ActionBar</item>
        <item name="colorControlActivated">?attr/colorAccent</item>
        <item name="windowActionBar">true</item>
        <item name="windowNoTitle">false</item>
</resources>

2. 区别

        theme主题一般是作用于整个 Application 或 某个 Activity

        style 样式一般作用于某个控件,比如Button Layout等

3. 使用注意点

        主题在新建项目的时候在AndroidManifest.xml 中一般默认配置了

<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">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

    假如我们把 android:theme="@style/AppTheme" 去掉,就会报如下错误:

    你必须要给这个app设定一个主题

E AndroidRuntime: Process: com.example.themeactivitytest, PID: 28833
E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.themeactivitytest/com.example.themeactivitytest.MainActivit
y}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

    如果你不想在AndoridManifest.xml文件中配置主题,也可以在onCreate()方法中通过代码设定

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //步骤1. 设置主题
        setTheme(R.style.Theme_NoTitleBar_Fullscreen);
        //步骤2. 加载布局
        setContentView(R.layout.activity_main);
    }

如果这两个步骤顺序写反了,也会报:AndroidRuntime: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 错误

4. 常用的主题

常见的主题风格有:
android:theme="@android:style/Theme.Dialog"  灰色背景 将一个Activity显示为对话框模式

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

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

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

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

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

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

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

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

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

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

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

android:theme="@android:style/Theme.Translucent"  半透明

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

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

android:theme="@android:style/Theme.Panel"   面板风格显示

如果配置为   android:theme="@android:style/Theme.NoDisplay"  此界面不显示,一般用于Activity传递纯数据,不需要界面显示的场景

需要注意事项就是需要在onResume 生命周期方法之前调用finish() 方法结束掉此Activity,否则报错:E AndroidRuntime: Caused by: java.lang.IllegalStateException: Activity  did not call
finish() prior to onResume() completing

5. 更多主题

        可以查看源码         样式 和  主题路径:

      framework/base/core/res/res/values/themes.xml

      framework/base/core/res/res/values/themes_material.xml       M- design风格的

      framework/base/core/res/res/values/styles.xml  

      framework/base/core/res/res/values/styles_material.xml        M- design风格的

android:theme="@android:style/Theme.Material.NoActionBar.Fullscreen"   M风格 无标题,全屏主题

android:theme="@android:style/Theme.Material.Light.Dialog"    Material风格 白色 Dialog主题

android:theme="@android:style/Theme.Material.Wallpaper"    Material风格 背景为壁纸的主题

android:theme="@android:style/Theme.Material.Settings"     Material风格类似设置模块主界面
    

比较类似,根据实际需求配置主题

6、更新

#2023.01.06

//继承系统内建的style(继承Framework中theme的属性是需要“android:”开头)
<style name="GreenText" parent="@android:style/TextAppearance">
    <item name="android:textColor">#00FF00</item>
</style>

//继承自AppCompat下的style(继承Support Library中theme的属性是不需要“android:”开头的)
<style name="Theme.ThemeActivity" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:textColor">#00FF00</item>
</style>

Material Color system
如果使用的是Material Theme,它提供了很多的 color attribute 使用:

colorPrimary : 顧名思義,就是主要的顏色,這個通常指得是 App 本身產品的代表色,通常也是品牌的主要視覺色
colorPrimaryVariant:主要顏色的變體,通常會從 colorPrimary 往較淡或較濃的色澤
colorOnPrimary:字面意思就是主要顏色上頭的顏色,這個顏色通常使用在背景色是主要顏色的元件上頭(例如字樣 Label 、icon 等)
colorSecondary:app 次要的品牌顏色,這些用於裝飾某些特定需要的 widget
colorSecondaryVariant:次要顏色的變體,也就是次要顏色偏暗或偏亮的樣式
colorOnSecondary:用於顯示於次要顏色上元件的顏色
colorError:顯示錯誤的顏色 (最常見的就是紅色)
colorOnError:在錯誤顏色上頭元件的顏色
colorSurface:表層顏色(就是 Sheet 的顏色)
colorOnSurface:在表層顏色上的的元件顏色
android:colorBackground:最底的背景色
colorOnBackground:用於對底背景色上頭的元件用的顏色
利用这些属性,搭配上面的那些技巧,可以組合出很棒的效果。

Android style(样式) 和 theme(主题) 属性

 

引用私有style报错:

AAPT: error: resource android:style/Theme.Leanback.Dialog is private.
error: failed linking references.

解决方法:

之前写法:

@android:style/Theme.Leanback.Dialog     //报错

改为引用私有资源:   加上*号

@*android:style/Theme.Leanback.Dialog    //正常使用


@*代表引用系统的非public资源。
 文章来源地址https://www.toymoban.com/news/detail-411206.html

到了这里,关于Android style(样式) 和 theme(主题) 属性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【VUE】ArcoDesign之自定义主题样式和命名空间

    Arco Design是什么? Arco Design 是由字节跳动推出的企业级产品的完整设计和开发解决方案前端组件库 官网地址:https://arco.design/ 同时也提供了一套开箱即用的中后台前端解决方案: Arco Design Pro (https://pro.arco.design/) Arco Design 样式基于 less 技术栈,但也同 ElementPlus 默认主题,CS

    2024年02月08日
    浏览(29)
  • Android设置夜间模式的主题样式

    在 Android 中设置夜间模式,你需要创建一个名为  values-night  的资源文件夹,并在这个文件夹下放置一个与  values  文件夹中的样式文件相对应的主题配置文件。这样系统会根据设备的当前模式(日间或夜间)自动选择合适的主题。 以下是如何设置夜间模式主题的基本步骤:

    2024年01月18日
    浏览(28)
  • sheetJs / xlsx-js-style 纯前端实现导出 excel 表格及自定义单元格样式

    xlsx 地址:https://www.npmjs.com/package/xlsx SheetJs 地址:https://docs.sheetjs.com/docs/ xlsx-js-style 地址:https://www.npmjs.com/package/xlsx-js-style !cols 设置列宽 cols 为一个对象数组,依次表示每一列的宽度 wpx 字段表示以像素为单位,wch 字段表示以字符为单位 hidden 如果为真,则隐藏该列 !rows 设

    2024年02月06日
    浏览(28)
  • 微信小程序自定义主题颜色【状态栏tab样式同步更改】

     此功能使用js控制变量 调整颜色值,赋值给css颜色达到切换自定义颜色效果 1.创建公共样式userStyle.js文件,通过定义style1和style2来控制全局颜色改变。 注意:颜色值务必为十六进制,避免API不兼容颜色 2.在index.js中引入userColor并放入data中。 打印userColor     3.index.wxml中将变

    2024年02月03日
    浏览(35)
  • 从零用VitePress搭建博客教程(4) – 如何自定义首页布局和主题样式修改?

    接上一节: 从零用VitePress搭建博客教程(3) - VitePress页脚、标题logo、最后更新时间等相关细节配置 有时候觉得自带的样式不好看,想自定义,首先我们在docs/.vitePress新建一个theme文件夹,用来存放自定义布局和主题修改的相关文件,如下所示 theme下再新建custom.css 和 index.js c

    2024年02月08日
    浏览(36)
  • flutter开发实战-Theme主题切换

    flutter开发实战-Theme主题切换 之前做的应用中有用到Theme主题切换,一直没有整理,这里整理一下。 使用的是Android studio // 提供五套可选主题色 在Main.dart入口的MaterialApp 当主题切换后,Provider会通知到对应的页面Build,就会显示对应的主题。 主题切换页面 flutter开发实战-Them

    2024年02月16日
    浏览(40)
  • IntelliJ IDEA 常用设置 主题颜色模式、字体、样式、背景自定义颜色及其背景图片(图文步骤)

    这里已 IntelliJ IDEA 2018.2.8 版本为例(本人已将主题设置成了暗色主题): 点击 file﹥setting  打开设置 点击 Editor﹥Color Scheme﹥Color Scheme Font 主要的操作有主代码字体,字体字号大小,字体行间距,非主代码字体   主要的操作有颜色,斜体,加粗,背景,下划线,删除线,边框

    2023年04月16日
    浏览(35)
  • 主题狗themes.yhz610.com-精选上百种优秀开源网站主题、博客主题、商城模板

    说明 主题狗themes.yhz610.com 精选上百种优秀开源网站主题、博客主题、商城模板。 类型包含 hexo 、jekyll 、hugo 、next 、vuepress 、gatsby 、wordpress 等等 主题狗- themes.dog 支持 PWA ,欢迎添加至手机桌面 为什么做此项目 现在很少有逛到纯网站主题分享的网站,不是付费就是广告或者

    2024年02月19日
    浏览(28)
  • 如何下载IDEA主题插件Material Theme UI?

    1、打开IDEA插件官网:点击这里,选择IDEA对应的版本下载。我的IDEA版本是2021.3,即我应下载对应的版本6.16.2 2、分别点击IDEA左上角 File - Settings - Plugins - 设置 - install Plugin from Disk… ,从你的电脑里导入刚下载的压缩包Material_Theme_UI-6.16.2 3、( 注意 :路径不能有中文)我的路

    2024年04月26日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包