博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android】8.2 动态选择和设置主题
阅读量:6991 次
发布时间:2019-06-27

本文共 2406 字,大约阅读时间需要 8 分钟。

分类:C#、Android、VS2015;

创建日期:2016-02-17

一、简介

除了通过Theme指定主题外,还可以在程序运行时动态指定并应用主题。

二、示例—ch0802ThemeDemo

1、运行截图

下面左图:活动条(ActionBar)也是浅色的;右图:没有活动条

 

下面左图:全屏不带活动条;右图:带活动条的黑色主题

 

下面左图:不带活动条的黑色主题;右图:带墙纸的材料主题

 

2、相关代码

(1)ch0802_ThemeDemo.axml文件

在Resources/layout文件夹下添加该文件。

(2)ch0802ThemeDemo.cs文件

在SrcDemos文件夹下添加该文件。

using System.Collections.Generic;using Android.App;using Android.OS;using Android.Widget;namespace MyDemos.SrcDemos{    [Activity(Label = "【例8-2】动态选择和设置主题")]    public class ch0802ThemeDemo2 : Activity    {        private int slectedThemeId;        protected override void OnCreate(Bundle savedInstanceState)        {            if (savedInstanceState != null)            {                SetTheme(savedInstanceState.GetInt("theme_id"));            }            base.OnCreate(savedInstanceState);            SetContentView(Resource.Layout.ch0802_ThemeDemo2);            //这里仅列出一部分Android内置的主题,其它的自己试吧            List
themesId = new List
() { Android.Resource.Style.ThemeDeviceDefaultLightDarkActionBar, Android.Resource.Style.ThemeDeviceDefaultLight, Android.Resource.Style.ThemeDeviceDefaultLightNoActionBar, Android.Resource.Style.ThemeDeviceDefaultLightNoActionBarFullscreen, Android.Resource.Style.ThemeDeviceDefault, Android.Resource.Style.ThemeDeviceDefaultNoActionBar, Android.Resource.Style.ThemeMaterialWallpaper, }; List
themesName = new List
(); foreach (var v in themesId) { themesName.Add(Theme.Resources.GetResourceEntryName(v)); } var listView1 = FindViewById
(Resource.Id.listView1); listView1.Adapter = new ArrayAdapter
(this, Android.Resource.Layout.SimpleListItemSingleChoice, themesName.ToArray()); //让字号小一些,以便能一行显示一个主题 listView1.ChildViewAdded += (s, e) => { ((TextView)e.Child).TextSize = 12; }; //演示如何设置默认选项 listView1.SetItemChecked(0, true); //单击某个主题项引发的事件 listView1.ItemClick += (s, e) => { slectedThemeId = themesId[e.Position]; //重新创建该页,此方法会自动调用OnSaveInstanceState方法 Recreate(); }; } protected override void OnSaveInstanceState(Bundle outState) { //将当前所选的主题传递给新实例 outState.PutInt("theme_id", slectedThemeId); base.OnSaveInstanceState(outState); } }}

转载地址:http://bfbvl.baihongyu.com/

你可能感兴趣的文章
服务器端与客户端TCP连接入门(一)
查看>>
lombok使用方法
查看>>
多线程基础
查看>>
1028: C语言程序设计教程(第三版)课后习题8.2
查看>>
批量更新软连接脚本
查看>>
Linux 文件和目录的属性
查看>>
Log4j配置使用
查看>>
初步认识Hadoop
查看>>
jQuery对象扩展方法(Extend)深度解析
查看>>
9道前端技能编程题
查看>>
NOIP 2000年提高组复赛 单词接龙
查看>>
mysql-索引与优化
查看>>
sql server 2008安装需要一直重启。但重启后又没有达到效果。
查看>>
Psp个人软件开发工具
查看>>
uva 1395(kruskal变形)
查看>>
斜率优化
查看>>
php 比较运算符
查看>>
for循环效率问题求解答
查看>>
Android so lib库远程http下载和动态注册
查看>>
痞子衡嵌入式:并行接口NAND标准(ONFI)及SLC Raw NAND简介
查看>>