Android应用动态修改主题的方法示例

作者:天人人 时间:2022-01-08 10:50:34 

1.使用API设置主题

如下所示,在Activity中使用setTheme


setTheme(R.style.MyTheme1);

2.调用API的时机

需要在super.onCreate(savedInstanceState)之前调用setTheme

3.重新设置主题

要重新设置主题,则需要结束Activity,重新启动才可以


public class MainActivity extends Activity {
 private TextView tv;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   if(MyApplication.SHOW_THEME_FLAG == MyApplication.SHOW_1_THEME_FLAG){
     setTheme(R.style.MyTheme2);
   }else if(MyApplication.SHOW_THEME_FLAG == MyApplication.SHOW_2_THEME_FLAG){
     setTheme(R.style.MyTheme1);
   }
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   tv = findViewById(R.id.tv);
   getActionBar().show();
   getActionBar().setTitle("ActionBar Title");
   tv.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       if(MyApplication.SHOW_THEME_FLAG == MyApplication.SHOW_1_THEME_FLAG){
         MyApplication.SHOW_THEME_FLAG = MyApplication.SHOW_2_THEME_FLAG;
       }else if(MyApplication.SHOW_THEME_FLAG == MyApplication.SHOW_2_THEME_FLAG){
         MyApplication.SHOW_THEME_FLAG = MyApplication.SHOW_1_THEME_FLAG;
       }
       Intent mIntent = getIntent();
       finish();
       overridePendingTransition(0,0);
       startActivity(mIntent);
     }
   });
 }
}

4.常用主题style设置


 <style name="MyTheme1" parent="@android:style/Theme.Material">
   <!-- 状态栏 -->
   <item name="android:colorPrimaryDark">#f00</item>
   <!-- ActionBar颜色 -->
   <item name="android:colorPrimary">#ff0</item>
   <!-- 界面背景色 -->
   <item name="android:windowBackground">@color/windowBackgroundColor1</item>
   <!-- 导航栏颜色 -->
   <item name="android:navigationBarColor">#0000ff</item>
 </style>
 <style name="MyTheme2" parent="@android:style/Theme.Material">
   <!-- 状态栏 -->
   <item name="android:colorPrimaryDark">#757575</item>
   <!-- ActionBar颜色 -->
   <item name="android:colorPrimary">#03A9F4</item>
   <!-- 界面背景色 -->
   <item name="android:windowBackground">@color/windowBackgroundColor2</item>
   <!-- 导航栏颜色 -->
   <item name="android:navigationBarColor">#1976D2</item>
 </style>

来源:https://blog.csdn.net/zxlworking1/article/details/79026956

标签:android,动态修改主题
0
投稿

猜你喜欢

  • Java基础教程之static五大应用场景

    2023-11-11 05:10:43
  • springcloud整合openfeign使用实例详解

    2022-10-05 08:51:52
  • C#集合之有序列表的用法

    2023-10-02 15:47:02
  • spring声明式事务 @Transactional 不回滚的多种情况以及解决方案

    2023-07-06 10:50:33
  • Android 中通过ViewDragHelper实现ListView的Item的侧拉划出效果

    2021-08-14 18:37:46
  • c# 图片加密解密的实例代码

    2023-08-20 21:21:01
  • C语言形参和实参的区别详解

    2023-08-27 19:41:53
  • android跑马灯出现重复跳动以及不滚动问题的解决方法

    2023-07-24 00:33:48
  • 基于java的opencv开发过程详解

    2022-03-31 20:02:59
  • springboot自定义过滤器的方法

    2021-07-29 05:36:53
  • java基础的详细了解第三天

    2023-10-05 23:47:04
  • 导入maven项目各个注解均报错的解决方案

    2022-02-23 12:35:09
  • springboot结合vue实现增删改查及分页查询

    2023-11-24 15:53:44
  • C#动态创建button的方法

    2023-02-11 15:58:26
  • 利用java实现邮箱群发功能

    2021-07-11 21:55:23
  • Android多国语言转换Excel及Excel转换为string详解

    2022-10-30 08:07:02
  • java实现微信H5支付方法详解

    2021-10-15 06:10:30
  • 如何在IDE部署springboot项目(有swagger和无swagger都是一样的)到服务器或者虚拟机上的docker

    2023-09-01 00:33:25
  • Android使用Intent的Action和Data属性实现点击按钮跳转到拨打电话和发送短信界面

    2021-09-04 15:39:22
  • 将Java的List结构通过GSON库转换为JSON的方法示例

    2023-02-13 20:33:52
  • asp之家 软件编程 m.aspxhome.com