开发者

Finding all available styles defined by android platform themes

In several android styling tutorials parent style elements are used that i can not find in the android.R.style.* styles (http://developer.android.com/reference/android/R.style.html).

A few examples are from the http://android-developers.blogspot.com/2011/04/customizing-action-bar.html action bar article. Nick uses parent styles like:

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

or

<style name="MyActionBarTabStyle" parent="android:style/Widget.Holo.Light.ActionBarV开发者_开发百科iew_TabView">
...
</style>

Where do these parent styles come from? Is it possible to list all available parent styles?

Thanks.


As stated in the "Applying Styles and Themes" article:

The Android platform provides a large collection of styles and themes that you can use in your applications. You can find a reference of all available styles in the R.style class. To use the styles listed here, replace all underscores in the style name with a period. For example, you can apply the Theme_NoTitleBar theme with "@android:style/Theme.NoTitleBar".

The R.style reference, however, is not well documented and does not thoroughly describe the styles, so viewing the actual source code for these styles and themes will give you a better understanding of what style properties each one provides. For a better reference to the Android styles and themes, see the following source code:

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

These files will help you learn through example. For instance, in the Android themes source code, you'll find a declaration for <style name="Theme.Dialog">. In this definition, you'll see all of the properties that are used to style dialogs that are used by the Android framework.


For "android:style/Widget.Holo.Light.ActionBarView_TabView" see: http://developer.android.com/reference/android/R.style.html#Widget_Holo_Light_ActionBar_TabView ...and note the API level it was introduced at!

For "android:style/Widget.Holo.Light.Spinner.DropDown.ActionBar" try: http://developer.android.com/reference/android/R.style.html#Widget_Holo_Light_DropDownItem_Spinner

The latter is just my best guess - I can't get the list to actually drop down.


Parent attribute is a optional one while creating your own themes or styles. Basically parent attributes are used for inheriting the styles which are already defined in the platform itself.

If we wish to inherit a theme or style and overwriting some features, we can use parent attribute.

Here's a link for the all available platform defined styles.

And one more tip :

If you want to inherit your own style that you created by yourself means follow this example to inherit.

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


Here is Official Google's Documentation for Default List of Themes and Styles Google Android Documentation

You can Find here in this documentation

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

I know the answer to above question finishes over here still giving way of implementation, as it will be helpful for novices..

How to Implement them

This is what i got from the themes.xml

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

Now to implement it in my project

I have to add the following line in my Styles.xml file

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

In this I am creating my own theme named "AppTheme" which will inherit its properties from already defined them by google. so I am mentioning it in parent

By looking into themes.xml and styles.xml will not only help to get the list of the already defined themes and styles but also help novices to have an idea how to create the themes.

As the theme I am mentioning here in parent is already defined by android so we will use it by prefixing the android: to theme name ..

If You want to inherit your created theme then

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

then just provide the style name to the parent, here i am using Apptheme as parent theme for theme2

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜