`
java-admin
  • 浏览: 1381916 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

Android Styles & Themes(下)——Theme

阅读更多

上一篇幅Android Styles & Themes(一)——Style介 绍了Style神奇的魅力,下面继续体验Theme的效果。就像Style一样,Theme依然在<style>元素里边申明,也是以同样的 方式引用。不同的是通过在Android Manifest中定义的<application>和<activity>元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View里。

定义Theme的一个例子

<?xml version=”1.0″ encoding=”UTF-8″?>
<resources>
<style name=”NewTheme” parent=”android:Theme.Black”>
<item name=”android:windowNoTitle”>true</item>
<item name=”android:textSize”>14sp</item>
<item name=”android:textColor”>#FFFF0000</item>
</style>
</resources>

以上资源的定义,相信大家一看就明白,在这里需要强调的是:有些资源定义中使用了@符号和?符号来引用资源。,对这2个符号的作用解释如下:

  • @ 表明我们应用的资源是前边定义过的(或者在前一个项目中或者在Android 框架中)。
  • ?表明我们引用的资源的值在当前的主题当中定义过。

这些技巧只能用在XML资源当中

在程序中使用Theme的方法

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.NewTheme);
setContentView(R.layout.main);
}
这里需要注意的是,对于theme资源的引用,资源ID不是文件名(theme.xml),而是资源名(NewTheme)。运行后的界面显示如下:
Theme

在AndroidManifest.xml中应用Theme

  • 为了在当前所有的Activity当中使用Theme,可以打开AndroidManifest.xml 文件,编辑<application>标签,让其包含android:theme属性,值是一个主题的名字,例 如:<application android:theme=”@style/NewTheme”>。
  • 如果只是想让程序当中的某个Activity拥有这个Theme,那么可以修改<activity>标签。Android中提供了 几种内置的资源,有好几种Theme你可以切换而不用自己写。比如可以用对话框Theme来让你的Activity看起来像一个对话框。在 manifest中定义,例如:<activity android:theme=”@android:style/Theme.Dialog”>
  • 如果喜欢一个Theme,但是想做一些轻微的改变,只需要将这个Theme添加为parent。Android SDK为我们提供了很多现成的Theme,部分列举如下:
    Android-Theme

    比如:我们修改Theme.Dialog Theme,继承Theme.Dialog来生成一个新的Theme。<style parent=”@android:style/Theme.Dialog”>
    继承了Theme.Dialog后,我们可以按照我们的要求来调整Theme。我们可以修改在Theme.Dialog中定义的每个item元素的值,然 后我们 在Android Manifest 文件中使用NewDialogTheme而不是 Theme.Dialog。

总结说明

以上的例子比较简单,在使用中也发现不少问题,例如Android SDK中定义的一个theme.xml如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<style name=”CustomTheme”>
<item name=”android:windowNoTitle”>true</item>
<item name=”windowFrame”>@drawable/screen_frame</item>
<item name=”windowBackground”>@drawable/screen_background_white</item>
<item name=”panelForegroundColor”>#FF000000</item>
<item name=”panelBackgroundColor”>#FFFFFFFF</item>
<item name=”panelTextColor”>?panelForegroundColor</item>
<item name=”panelTextSize”>14</item>
<item name=”menuItemTextColor”>?panelTextColor</item>
<item name=”menuItemTextSize”>?panelTextSize</item>
</style>
</resources>

这个例子看上去,就发现几个不太符合规范的地方:

  1. item name属性有些没有前缀Android,这似乎不符合Android SDK中定义的规范,规范详解请阅读AndroidManifest.xml文件结构说明
  2. <item name=”panelTextSize”>14</item>,值缺少单位,应该是14sp;

将这个theme引用到程序中,发现如下错误:Error:no resource found that matches the given name: panelForegroundColor,这个错误让人莫名其妙。Android SDK中提供的例子程序,以前也发现了一些小问题,比如说:XML文件中少了符号“。由于对Theme文档的定义、到底有哪些属性,Google没有提供 文档说明,这个错误不知道如何修改。在网上google了下,很多人都发现了这个问题,目前还没有人给出具体的解决办法,我们会继续深入的研究 Theme,有同样问题的可以在后续篇幅中关注这个问题的解决方法。

分享到:
评论

相关推荐

    安卓Android源码——theme.rar

    本压缩包"Android源码——theme.rar"可能包含了Android操作系统中关于主题定制和实现的相关源代码。通过深入理解这些源码,开发者可以更自由地调整应用的外观,提升用户体验。 Android的主题主要由XML资源文件定义...

    jquery ui & themes

    总的来说,jQuery UI是一个强大的工具,它的主题系统为开发者提供了极大的灵活性,使他们能够在不编写大量CSS代码的情况下,实现美观且一致的用户界面。无论是在企业级应用还是个人项目中,jQuery UI都是提升用户...

    Android Theme和Styles内部定义解析.txt

    ### Android Theme和Styles内部定义解析 #### 一、概述 在Android开发中,为了实现界面的一致性和美观性,开发者通常会使用`Theme`和`Styles`来管理UI元素的样式和外观。本文将深入探讨Android中`Theme`和`Styles`...

    Android_样式(style)&主题(theme)&显示单位

    在Android开发中,样式(style)和主题(theme)是两个关键的概念,它们用来统一和管理应用程序的视觉表现。样式可以看作是一组预定义的属性集合,用于控制UI组件的外观,比如字体颜色、大小、背景等。而主题则是...

    安卓Android源码——MyButton2.rar

    再者,Android的样式和主题(Styles and Themes)也可能在MyButton2中有所应用。开发者可以通过定义自定义的主题,在XML资源文件中设置按钮的样式,然后在布局文件中引用,这样可以统一整个应用的视觉风格,同时方便...

    WPF.Themes经典的wpf主题样式,包含22种不同样式,一行代码即可改变全部窗体的样式。

    WPF.Themes.ThemeManager.ApplyTheme(Application.Current, Properties.Settings.Default.Themes);//读取设置界面主题配置信息 即可使所有常用的控件主题变成所选择的主题,无需在每个窗体里修改样式。 减少了很...

    Android源码——UI界面源码.zip

    本资源“Android源码——UI界面源码.zip”包含了一些关于Android UI界面的源代码,帮助开发者深入理解Android UI的设计原理和实现机制。下面我们将详细探讨Android UI界面的相关知识点。 首先,Android UI主要基于...

    Apex Legends New Tab & Themes-crx插件

    现在您可以安装此新扩展程序以获取Apex Legends Wallpapers New Tab&Themes Apex Legends壁纸主题,现在您可以安装Apex Legends带有壁纸的新标签立即安装! Apex Legends壁纸新标签页,您将看到新功能和许多更新。 ...

    Android源码——超级清爽android计算器界面源码.zip

    Android的`styles.xml`和`themes.xml`文件可以用来定义和应用这些样式。 总的来说,通过研究这个"超级清爽android计算器界面源码",开发者可以深入理解Android应用的各个层面,包括UI设计、事件处理、计算逻辑的...

    安卓Android源码——换肤.zip

    1. **主题定义**:在`res/values`目录下创建不同主题的styles.xml文件,定义主题的颜色、字体、背景等属性。例如,定义一个名为`Theme.Skin1`的主题,其中包含各种控件的颜色、背景等样式。 2. **资源管理**:将...

    Android开发指南中文版-----应用程序框架

    ### Android开发指南中文版——应用程序框架 #### 一、应用程序基础(Application Fundamentals) 在Android开发中,应用程序的基础架构包括以下几个核心部分: ##### 关键类 Android应用的核心是几个关键类: 1. *...

    Android软件换肤功能(AppTheme)

    Android应用的外观和行为可以通过定义主题(Themes)和样式(Styles)来控制。主题是全局的,应用于整个Activity或应用程序,而样式则可以应用于单个View或ViewGroup。在`res/values/styles.xml`文件中,我们可以...

    安卓Android源码——日记本.zip

    6. **样式和主题**: 在res/values目录下,可能会有styles.xml和themes.xml文件,定义了应用的整体视觉风格和主题。 7. **图片资源**: res/drawable目录下会存放应用所需的图标和其他图形资源。 通过分析这个源码,...

    安卓Android源码——style.rar

    在`AndroidManifest.xml`中,通过`android:theme`属性为应用程序或Activity指定主题。主题可以包含应用范围内的通用样式,如按钮、文本视图等的默认样式。 4. **引用样式**:在布局文件中,可以使用`style`属性来...

    Android源码——仿Win8的metro的UI界面源码.zip

    7. **主题和样式**:通过自定义主题和样式文件(如styles.xml和themes.xml),可以统一应用的视觉样式,使其符合Win8 Metro的外观。 8. **碎片(Fragment)**:如果应用支持多屏设备,可能用到了Fragment来管理屏幕...

    安卓Android源码——仿安卓美团界面.zip

    5. **主题和样式(Themes & Styles)**: Android应用可以使用主题和样式来统一界面外观。源码可能包含了自定义的主题,以便让整个应用保持一致的设计风格,如字体、颜色和间隔。 6. **适配器(Adapter)**: 对于...

    Android Material Design的Demo(Material Design theme/RecyclerView/CardView)

    Android Material Design的Demo(Material Design theme/RecyclerView/CardView),Android Studio项目。 所属博文:http://blog.csdn.net/books1958/article/details/41956093

Global site tag (gtag.js) - Google Analytics