查找由 android 平台主题定义的所有可用样式

Posted

技术标签:

【中文标题】查找由 android 平台主题定义的所有可用样式【英文标题】:Finding all available styles defined by android platform themes 【发布时间】:2011-09-27 13:59:55 【问题描述】:

在几个 android 样式教程中使用了我在 android.R.style.* 样式中找不到的父样式元素 (http://developer.android.com/reference/android/R.style.html)。

一些示例来自http://android-developers.blogspot.com/2011/04/customizing-action-bar.html 操作栏文章。 Nick 使用如下父样式:

<style name="MyDropDownNav" parent="android:style/Widget.Holo.Light.Spinner.DropDown.ActionBar">
...
</style>

<style name="MyActionBarTabStyle" parent="android:style/Widget.Holo.Light.ActionBarView_TabView">
...
</style>

这些父样式从何而来?是否可以列出所有可用的父样式?

谢谢。

【问题讨论】:

【参考方案1】:

如"Applying Styles and Themes"文章所述:

Android 平台提供了大量样式和主题 可以在您的应用程序中使用。你可以找到所有的参考 R.style 类中的可用样式。要使用此处列出的样式, 用句点替换样式名称中的所有下划线。例如, 你可以应用Theme_NoTitleBar 主题 "@android:style/Theme.NoTitleBar"

但是,R.style 参考文献没有很好的文档记录,也没有 彻底描述样式,因此查看实际源代码 这些风格和主题会让你更好地理解什么 每个提供的样式属性。为了更好地参考 Android 样式和主题,请看以下源码:

Android Styles (styles.xml) Android Themes (themes.xml)

这些文件将帮助您通过示例进行学习。例如,在 Android 主题源代码,您会找到 <style name="Theme.Dialog"> 的声明。在此定义中,您将看到所有 用于设置 Android 使用的对话框样式的属性 框架。

【讨论】:

如果有人可以指出上述文件的来源,我可以只浏览样式和主题,而无需下载整个安卓源代码 在grepcode.com/file/repository.grepcode.com/java/ext/…找到文件【参考方案2】:

对于“android:style/Widget.Holo.Light.ActionBarView_TabView”,请参见: http://developer.android.com/reference/android/R.style.html#Widget_Holo_Light_ActionBar_TabView ...并注意它引入的 API 级别!

对于“android:style/Widget.Holo.Light.Spinner.DropDown.ActionBar”尝试: http://developer.android.com/reference/android/R.style.html#Widget_Holo_Light_DropDownItem_Spinner

后者只是我的最佳猜测 - 我无法让列表真正下拉。

【讨论】:

【参考方案3】:

Parent 属性在创建您自己的themesstyles 时是一个可选属性。 基本上parent 属性用于继承平台本身已经定义的样式。

如果我们希望继承themestyle 并覆盖一些特性,我们可以使用parent 属性。

这里是所有available platform defined styles.的链接

还有一个提示:

如果您想继承自己创建的style,请按照此示例进行继承。

    <style name="MyDropDownNav.Red">
        <item name="android:textColor">#FF0000</item>
    </style>

【讨论】:

【参考方案4】:

这里是Official Google's Documentation 用于Default ListThemesStyles Google Android Documentation

您可以在本文档中找到此处

Android Styles (styles.xml) Android Themes (themes.xml)

我知道上面问题的答案在这里完成仍然让位于实施,因为它对新手有帮助..

如何实现它们

这是我从themes.xml得到的

<style name="Theme.NoTitleBar">
    <item name="android:windowNoTitle">true</item>
</style>

现在to implement它在我的项目中

我必须在我的Styles.xml 文件中添加以下行

<style name="AppTheme" parent="android:Theme.NoTitleBar" />

在此我正在创建名为“AppTheme”的own theme,它将inherit 的属性来自already defined them by google。所以我在parent中提到它

通过查看themes.xmlstyles.xml 不仅可以查看help to get the list of the already defined 主题和样式,还可以查看help novices to have an idea how to create 主题。

由于我在parent 中提到的主题已经由 android 定义,所以我们将通过在主题名称前加上 android: 来使用它..

如果你想inherit your created theme那么

<style name="Theme2" parent="AppTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style> 

然后只需提供style name to the parent,这里我使用Apptheme 作为theme2 的父主题

【讨论】:

漂亮的不仅是它的名称,还有主题的源代码,虽然它与“Idolon”解决方案没有太大区别,而不仅仅是指向属于谷歌的不同页面。

以上是关于查找由 android 平台主题定义的所有可用样式的主要内容,如果未能解决你的问题,请参考以下文章

安卓 Activity主题theme设置

Android 样式和主题(style & theme)

android样式和主题

自定义标题定义为布局:有没有办法通过样式/主题设置它?

android学习笔记38——样式和主题

如何使用现有自定义主题在 XML 中隐藏 Activity 的标题栏