分类:C#、Android、VS2015;

创建日期:2016-02-17

一、简介

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

二、示例—ch0802ThemeDemo

1、运行截图

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

 

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

 

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

 

2、相关代码

(1)ch0802_ThemeDemo.axml文件

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6. <TextView
  7. android:text="提示:单击主题可立即看到当前页面的应用效果"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:id="@+id/textView1"
  11. android:layout_gravity="center_horizontal"
  12. android:gravity="center_horizontal"
  13. android:textSize="14dp"
  14. android:layout_marginBottom="10dp"
  15. android:layout_marginTop="5dp" />
  16. <ListView
  17. android:minWidth="25px"
  18. android:minHeight="25px"
  19. android:layout_width="match_parent"
  20. android:layout_height="match_parent"
  21. android:id="@+id/listView1"
  22. android:listSelector="@color/myGreen"
  23. android:choiceMode="singleChoice" />
  24. </LinearLayout>

(2)ch0802ThemeDemo.cs文件

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

  1. using System.Collections.Generic;
  2. using Android.App;
  3. using Android.OS;
  4. using Android.Widget;
  5. namespace MyDemos.SrcDemos
  6. {
  7. [Activity(Label = "【例8-2】动态选择和设置主题")]
  8. public class ch0802ThemeDemo2 : Activity
  9. {
  10. private int slectedThemeId;
  11. protected override void OnCreate(Bundle savedInstanceState)
  12. {
  13. if (savedInstanceState != null)
  14. {
  15. SetTheme(savedInstanceState.GetInt("theme_id"));
  16. }
  17. base.OnCreate(savedInstanceState);
  18. SetContentView(Resource.Layout.ch0802_ThemeDemo2);
  19.  
  20. //这里仅列出一部分Android内置的主题,其它的自己试吧
  21. List<int> themesId = new List<int>() {
  22. Android.Resource.Style.ThemeDeviceDefaultLightDarkActionBar,
  23. Android.Resource.Style.ThemeDeviceDefaultLight,
  24. Android.Resource.Style.ThemeDeviceDefaultLightNoActionBar,
  25. Android.Resource.Style.ThemeDeviceDefaultLightNoActionBarFullscreen,
  26.  
  27. Android.Resource.Style.ThemeDeviceDefault,
  28. Android.Resource.Style.ThemeDeviceDefaultNoActionBar,
  29.  
  30. Android.Resource.Style.ThemeMaterialWallpaper,
  31. };
  32. List<string> themesName = new List<string>();
  33. foreach (var v in themesId)
  34. {
  35. themesName.Add(Theme.Resources.GetResourceEntryName(v));
  36. }
  37. var listView1 = FindViewById<ListView>(Resource.Id.listView1);
  38. listView1.Adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItemSingleChoice, themesName.ToArray());
  39. //让字号小一些,以便能一行显示一个主题
  40. listView1.ChildViewAdded += (s, e) =>
  41. {
  42. ((TextView)e.Child).TextSize = 12;
  43. };
  44. //演示如何设置默认选项
  45. listView1.SetItemChecked(0, true);
  46. //单击某个主题项引发的事件
  47. listView1.ItemClick += (s, e) =>
  48. {
  49. slectedThemeId = themesId[e.Position];
  50. //重新创建该页,此方法会自动调用OnSaveInstanceState方法
  51. Recreate();
  52. };
  53. }
  54.  
  55. protected override void OnSaveInstanceState(Bundle outState)
  56. {
  57. //将当前所选的主题传递给新实例
  58. outState.PutInt("theme_id", slectedThemeId);
  59. base.OnSaveInstanceState(outState);
  60. }
  61. }
  62. }

【Android】8.2 动态选择和设置主题的更多相关文章

  1. [转]Android逆向之动态调试总结

    一.在SO中关键函数上下断点 刚学逆向调试时.大多都满足于在SO中某关键函数上下断点.然后通过操作应用程序,去触发这个断点,然后进行调试 详细的步骤可以参见非虫大大的<Android软件安全与逆 ...

  2. android中listview的一些样式设置

    在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android: ...

  3. Android 6.0 动态权限申请注意事项

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/uana_777/article/details/54136255 Part One 权限区分 And ...

  4. Android 6.0动态权限(转)

    转自:http://blog.csdn.net/uana_777/article/details/54136255 Part One 权限区分 Android 6.0 为了保护用户隐私,将一些权限的申 ...

  5. Android Studio 一些方便使用的设置

    相信非常多使用Eclipse的朋友,開始用Android Studio都是认为不是特别方便, a:比方怎样使鼠标放到方法上面,就有提示用法; b:怎样设置字体大小,和背景色; c:还有怎么查看Outl ...

  6. Android开发模版代码(4)——状态栏设置

    下面的代码是基于开源项目SystemBarTint,我们需要添加其依赖 compile 'com.readystatesoftware.systembartint:systembartint:1.0. ...

  7. Android 6.0 - 动态权限管理的解决方案(转)

    转自:http://www.cnblogs.com/dubo-/p/6018262.html Android 6.0 - 动态权限管理的解决方案   转载请标注 Android 6.0版本(Api 2 ...

  8. Android教程 -08 ToolBar的使用和主题的介绍

    ActionBar 简介 视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷 讲解ToolBar之前首先需要了解 ActionBar, 两者使用起来基本上一致. Android 3 ...

  9. Android WebView 实现文件选择、拍照、录制视频、录音

    原文地址:Android WebView 实现文件选择.拍照.录制视频.录音 | Stars-One的杂货小窝 Android中的WebView如果不进行相应的设置,H5页面的上传按钮是无法触发And ...

随机推荐

  1. Servlet一(web基础学习笔记二十)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  2. HTML二(基本标签)

    一.标题 HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. <!--标题--> <h1>标题 1</h1> ...

  3. jdbc防止sql注入-PreparedStatement

    jdbc防止sql注入 jdbc防止sql注入-PreparedStatement public List getUserByName(String name,String password){    ...

  4. 改动Apach默认port

    一.改动Apache的默认port号 在WEB SERVER界,无论是微软的IIS还是世界排名第一的Apache,它们安装好后默认的网页服务port号都是80.有必要指出的是,假设你的电脑中已经安装有 ...

  5. urlretrieve 如何给文件下载设置下载进度?

    #python #xiaodeng #如何给文件下载设置下载进度? import urllib def callbackinfo(down,block,size): ''' 回调函数: down:已经 ...

  6. 速度挑战 - 2小时完成HTML5拼图小游戏

    概述 我用lufylegend.js开发了第一个HTML5小游戏——拼图游戏,还写了篇博文来炫耀一下:HTML5小游戏<智力大拼图>发布,挑战你的思维风暴. 详细 代码下载:http:// ...

  7. xmlhttp.readyState==4 && xmlhttp.status==200的探究

    作为一个后端人员,很惭愧,对Ajax的使用只局限在功能实现层面的交互,对底层通过XMLHttpRequest对象来使用的知识却没有仔细研究过.现总结如下 1. XMLHttpRequest 对象的相关 ...

  8. js removeChild

    removeChild():删除元素只能通过直接父元素删除,没有自删 1 <select id="city" size="6" style="w ...

  9. 商业规则引擎IBM WebSphere ILog JRules概述,开发基础教程

    Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来 ...

  10. RabbitMQ 安装和监控[原,转]

    在Windows上安装Rabbit MQ 指南,最好的是这篇<Rabbit MQ Windows Installation guide>,其中还包括了使用.NET RabbitMQ.Cli ...