【Android】8.2 动态选择和设置主题
分类:C#、Android、VS2015;
创建日期:2016-02-17
一、简介
除了通过Theme指定主题外,还可以在程序运行时动态指定并应用主题。
二、示例—ch0802ThemeDemo
1、运行截图
下面左图:活动条(ActionBar)也是浅色的;右图:没有活动条
下面左图:全屏不带活动条;右图:带活动条的黑色主题
下面左图:不带活动条的黑色主题;右图:带墙纸的材料主题
2、相关代码
(1)ch0802_ThemeDemo.axml文件
在Resources/layout文件夹下添加该文件。
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <TextView
- android:text="提示:单击主题可立即看到当前页面的应用效果"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/textView1"
- android:layout_gravity="center_horizontal"
- android:gravity="center_horizontal"
- android:textSize="14dp"
- android:layout_marginBottom="10dp"
- android:layout_marginTop="5dp" />
- <ListView
- android:minWidth="25px"
- android:minHeight="25px"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/listView1"
- android:listSelector="@color/myGreen"
- android:choiceMode="singleChoice" />
- </LinearLayout>
(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<int> themesId = new List<int>() {
- 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<string> themesName = new List<string>();
- foreach (var v in themesId)
- {
- themesName.Add(Theme.Resources.GetResourceEntryName(v));
- }
- var listView1 = FindViewById<ListView>(Resource.Id.listView1);
- listView1.Adapter = new ArrayAdapter<string>(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);
- }
- }
- }
【Android】8.2 动态选择和设置主题的更多相关文章
- [转]Android逆向之动态调试总结
一.在SO中关键函数上下断点 刚学逆向调试时.大多都满足于在SO中某关键函数上下断点.然后通过操作应用程序,去触发这个断点,然后进行调试 详细的步骤可以参见非虫大大的<Android软件安全与逆 ...
- android中listview的一些样式设置
在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android: ...
- Android 6.0 动态权限申请注意事项
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/uana_777/article/details/54136255 Part One 权限区分 And ...
- Android 6.0动态权限(转)
转自:http://blog.csdn.net/uana_777/article/details/54136255 Part One 权限区分 Android 6.0 为了保护用户隐私,将一些权限的申 ...
- Android Studio 一些方便使用的设置
相信非常多使用Eclipse的朋友,開始用Android Studio都是认为不是特别方便, a:比方怎样使鼠标放到方法上面,就有提示用法; b:怎样设置字体大小,和背景色; c:还有怎么查看Outl ...
- Android开发模版代码(4)——状态栏设置
下面的代码是基于开源项目SystemBarTint,我们需要添加其依赖 compile 'com.readystatesoftware.systembartint:systembartint:1.0. ...
- Android 6.0 - 动态权限管理的解决方案(转)
转自:http://www.cnblogs.com/dubo-/p/6018262.html Android 6.0 - 动态权限管理的解决方案 转载请标注 Android 6.0版本(Api 2 ...
- Android教程 -08 ToolBar的使用和主题的介绍
ActionBar 简介 视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷 讲解ToolBar之前首先需要了解 ActionBar, 两者使用起来基本上一致. Android 3 ...
- Android WebView 实现文件选择、拍照、录制视频、录音
原文地址:Android WebView 实现文件选择.拍照.录制视频.录音 | Stars-One的杂货小窝 Android中的WebView如果不进行相应的设置,H5页面的上传按钮是无法触发And ...
随机推荐
- Servlet一(web基础学习笔记二十)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- HTML二(基本标签)
一.标题 HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. <!--标题--> <h1>标题 1</h1> ...
- jdbc防止sql注入-PreparedStatement
jdbc防止sql注入 jdbc防止sql注入-PreparedStatement public List getUserByName(String name,String password){ ...
- 改动Apach默认port
一.改动Apache的默认port号 在WEB SERVER界,无论是微软的IIS还是世界排名第一的Apache,它们安装好后默认的网页服务port号都是80.有必要指出的是,假设你的电脑中已经安装有 ...
- urlretrieve 如何给文件下载设置下载进度?
#python #xiaodeng #如何给文件下载设置下载进度? import urllib def callbackinfo(down,block,size): ''' 回调函数: down:已经 ...
- 速度挑战 - 2小时完成HTML5拼图小游戏
概述 我用lufylegend.js开发了第一个HTML5小游戏——拼图游戏,还写了篇博文来炫耀一下:HTML5小游戏<智力大拼图>发布,挑战你的思维风暴. 详细 代码下载:http:// ...
- xmlhttp.readyState==4 && xmlhttp.status==200的探究
作为一个后端人员,很惭愧,对Ajax的使用只局限在功能实现层面的交互,对底层通过XMLHttpRequest对象来使用的知识却没有仔细研究过.现总结如下 1. XMLHttpRequest 对象的相关 ...
- js removeChild
removeChild():删除元素只能通过直接父元素删除,没有自删 1 <select id="city" size="6" style="w ...
- 商业规则引擎IBM WebSphere ILog JRules概述,开发基础教程
Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来 ...
- RabbitMQ 安装和监控[原,转]
在Windows上安装Rabbit MQ 指南,最好的是这篇<Rabbit MQ Windows Installation guide>,其中还包括了使用.NET RabbitMQ.Cli ...