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