|
Cyril Sermon (@admin) |
Themes are an excellent way to ensure consistency for your application’s UI. Rather than fully define each style, Android provides a shortcut to let you use styles from the currently applied theme.
To do this, you use ?android: rather than @ as a prefix to the resource you want to use. The following example shows a snippet of the above code but uses the current theme’s text color rather than an exter-nal resource:
<EditText
android:id=”@+id/myEditText”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/stop_message”
android:textColor=”?android:textColor”
/>
This technique lets you create styles that will change if the current theme changes, without having to modify each individual style resource.
In this example, you’ll create new external resources in preparation for adding functionality to the To-Do List example you started in Chapter 2. The string and image resources you create here will be used in Chapter 4 when you implement a menu system for the To-Do List application.
The following steps will show you how to create text and icon resources to use for the add and remove menu items, and how to create a theme to apply to the application:
Create two new PNG images to represent adding, and removing, a to-do list item. Each image should have dimensions of approximately 16 × 16 pixels, like those illustrated in Figure 3-5.
Copy the images into your project’s res/drawable folder, and refresh your project. Your proj-ect hierarchy should appear as shown in Figure 3-6.
Open the strings.xml resource from the res/values folder, and add values for the “add_new,” “remove,” and “cancel” menu items. (You can remove the default “hello” string value while you’re there.)
<?xml version=”1.0” encoding=”utf-8”?>
<resources>
<string name=”app_name”>To Do List</string>
<string name=”add_new”>Add New Item</string>
<string name=”remove”>Remove Item</string>
<string name=”cancel”>Cancel</string>
</resources>
Create a new theme for the application by creating a new styles.xml resource in the res/values folder. Base your theme on the standard Android theme, but set values for a default text size.
<?xml version=”1.0” encoding=”utf-8”?>
<resources>
<style name=”ToDoTheme” parent=”@android:style/Theme.Black”> <item name=”android:textSize”>12sp</item>
</style>
</resources>
Apply the theme to your project in the manifest:
<activity android:name=”.ToDoList”
android:label=”@string/app_name”
android:theme=”@style/ToDoTheme”>