仓库github地址

  1. 定义属性
  2. 在不同样式中声明属性值
  3. 在布局中使用属性
  4. 再在代码中进行切换

1. 在attr.xml文件中定义属性颜色、字体大小等

<?xml version="1.0" encoding="utf-8"?>
<resources><attr name="tvColor1" format="color" /><attr name="bgNormalColor" format="color" /><attr name="tvSize1" format="dimension" />
</resources>

2. 在style.xml中设置属性值

<resources><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="tvColor1">#333333</item><item name="tvSize1">12sp</item><item name="bgNormalColor">#fefefe</item></style><style name="AppTheme2" parent="Theme.AppCompat.DayNight"><item name="colorPrimary">#ff0000</item><item name="colorPrimaryDark">#ff00ff</item><item name="colorAccent">#ffff00</item><item name="tvColor1">#ff0000</item><item name="tvSize1">28sp</item><item name="bgNormalColor">#666</item></style></resources>

3. 在布局中使用

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="?attr/bgNormalColor"tools:context=".MainActivity"><EditTextapp:layout_constraintTop_toTopOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"android:layout_width="100dp"android:layout_height="wrap_content" /><Buttonapp:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"android:layout_width="wrap_content"android:text="change Theme"android:textColor="?attr/tvColor1"android:textSize="?attr/tvSize1"android:onClick="changeTheme"android:layout_height="wrap_content" />
</androidx.constraintlayout.widget.ConstraintLayout>

4.在MainActivity中切换

public class MainActivity extends AppCompatActivity {private int themeType;@Overrideprotected void onCreate(Bundle savedInstanceState) {themeType = getSharedPreferences("theme", MODE_PRIVATE).getInt("themeType", 0);if (themeType == 0) {setTheme(R.style.AppTheme);} else {setTheme(R.style.AppTheme2);}super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void changeTheme(View view) {themeType = themeType == 0 ? 1 : 0;getSharedPreferences("theme", MODE_PRIVATE).edit().putInt("themeType", themeType).commit();recreate();//会丢失当前页面的状态,需要保持的数据做持久化保持}
}

android 设置自定义主题及切换方案相关推荐

  1. Android设置自定义主题色,Android主题无法实现最简单的:自定义每个主题颜色

    经过搜索和尝试,我得到的提示是,你可以做一些事情和一些你不能做的事情. 您可以 a)在attrs中定义自己的属性 b)在styles.xml中设置它们的值 @color/White @color/Bl ...

  2. 华为手机怎么看图片属性_手机怎么更改微信主题 华为手机怎么设置自定义主题...

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以免费收到最新内容了.每天都有分享,完全是免费订阅,请放心关注.(图片来源于网络,侵权联系删除,谢谢) 1.先在手机 ...

  3. android 设置全局的页面切换动画问题

    这两天在看android 设置页面切换动画,看的很纠结,晕菜了 我这里有四个手机, 一加 版本  5.1.1   小米2s  版本 5.0 华为P6   版本    4.4.2   酷派版本   4. ...

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

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

  5. IDEA设置自定义主题背景

    IDEA作为当前热门强大的开发工具之一,不仅界面清洁简单,功能也是十分强大,而且它独一门的自定义主题背景,也深受很多开发者青睐 进入正题,首先进入IDEA界面 ctrl+shift+A快捷键搜索输入 ...

  6. Android设置壁纸的几种方案

    Android设置壁纸有许多方法,主要思路有两种: 1:通过WallpaperManager设置 2:通过系统程序设置 下文将分开说明: <1>通过WallpaperManager设置 该 ...

  7. Android 夜间模式主题风格切换

    1. 跟进源码 1.1 String.xml Settings 模块 <string name="night_display_title" msgid="26264 ...

  8. android 设置风格主题,Android Theme 常见主题风格详解

    本文为自己多年来在Android实战开发过程中总结归纳的一些常见问题,现在分享出来希望对初学者有所帮助. 目录 [1. 什么是Style,什么是Theme?] [2. 在定义Theme的时候@符号和? ...

  9. android 封装状态页面,Android 缺省页状态切换方案

    MultiStatePage MultiStatePage的功能及特点 无需在布局添加视图代码 可显示自定义状态视图,任意拓展 可用于 Activity.Fragment.或指定的 View 自定义重 ...

最新文章

  1. mysql8.0.22 win7_ArcGIS10.8地理信息软件中英文版安装教程
  2. JavaWeb学习之路——SpringBoot 中thymeleaf模板用法(三)
  3. linux下mysql5.7修改密码
  4. L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
  5. python3高性能网络编程_Python高级网络编程系列之基础篇
  6. Wondershare DVD Creator mac版如何刻录光盘文件
  7. 集合类接口和类层次关系图
  8. 《大数据之路-阿里巴巴大数据实践》第三章 数据同步
  9. 可以用php做出一个圆锥吗,PS使用渐变工具画一个立体圆锥
  10. windows上qt5.9下载安装教程
  11. 遇到问题---maven----Unable to process Jar entry
  12. 国庆第三天的一些杂感
  13. Redis-PHP实战篇——常用的使用场景
  14. 2021年N1叉车司机考试技巧及N1叉车司机
  15. 判断点与多边形的关系(3):角度和法
  16. 一线城市老年消费洞察:广州市50+新老年网购用户画像!
  17. 小游戏:魔鬼与牧师_1
  18. mysql正确清理binlog日志的方法
  19. 再谈Delphi vs VC++(非常精彩)
  20. android 悬浮按钮 功能实现,android悬浮按钮实现方法

热门文章

  1. 品牌台式计算机主机,游戏台式电脑主机什么牌子好-游戏台式电脑主机品牌排行榜...
  2. javascript如何判断浏览器是否安装某插件
  3. 农村中学计算机教室管理制度,中小学专用教室管理标准.doc
  4. 关于卫星地球站(或地面站)的功率限值,你了解多少?
  5. 人件札记:保持高效的办公室环境
  6. Python自学之路第十八步——异常
  7. 简述UIDatePicker的用法
  8. NineoldAndroids动画库源码分析
  9. 【贴图、OCR】snipaste、天若OCR-win软件
  10. obs 屏幕太大,录制不到下面的界面