Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add multiple theme attributes to the same activity on Android Manifest?

I have an android manifest with an activity that I want to apply to styles to:

 <activity android:label="@string/app_name" android:name="Language" android:theme="@android:style/Theme.NoTitleBar>

Is how it looks right now, but while keeping the NoTitleBar attribute, I would like to add this attribute as well:

android:style/Theme.Light"

But I'm just so new to Android that I can't figure it out.

Please help!

like image 520
Stephen J. Avatar asked May 13 '11 22:05

Stephen J.


People also ask

Can we define themes in Android manifest?

You can create a theme the same way you create styles. The difference is how you apply it: instead of applying a style with the style attribute on a view, you apply a theme with the android:theme attribute on either the <application> tag or an <activity> tag in the AndroidManifest. xml file.

How do you apply an activity style?

There are two ways to set a style: To an individual View, by adding the style attribute to a View element in the XML for your layout. Or, to an entire Activity or application, by adding the android:theme attribute to the <activity> or <application> element in the Android manifest.


1 Answers

You cannot have more than one theme applied at once in your manifest.

I believe there is a theme Theme.Light.NoTitleBar that will do what you want - but I will show you below how you can easily do this yourself and customize more.

What you need to do is create a theme which has either Theme.NoTitleBar or Theme.Light as it's parent and customizes the bits you want -- in this case the easiest way is to create a theme with Theme.Light as it's parent and just hide the title bar (rather than have the Theme.NoTitleBar as the parent and then have to make everything light which is much harder!).

You can do this with the following code in your themes.xml file in the values folder:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- use the Android Light theme as the base for our own theme -->
    <style name="MySuperTheme" parent="@android:style/Theme.Light">

        <!-- hide the Window Title -->
        <item name="android:windowNoTitle">true</item>

        <!-- You could change the scrollbar, checkbox style, anything! -->
    </style>

</resources>

Then use android:theme="@style/MySuperTheme" for your activity (or you could even apply it to your whole application by placing it on the application element -- if you apply a style to an individual activity and have one set for the whole application as well then the style of the individual activity will be the one shown).

Take a look at the Android themes.xml for a list of all the things you can customize in your own theme.

You can also look at all of the Android styles to see how they are done.

like image 116
Joseph Earl Avatar answered Oct 03 '22 22:10

Joseph Earl