|
I got a comment on this blog with relation to an old sin of mine,
the
custom adapter example program. That example was about custom views in a list
adapter. The comment was innocent enough: is there a way to change the colors of
that list? I thought it was a 5 minute task to answer that question, in the end
I had to deal with a topic I never wanted to know about: themes.
Click here to download the example
program.
It turned out that the color scheme used by ListView is eventually taken from the
active theme. It is possible to change it programmatically but it is quite complicated
to do so. Meanwhile, with themes, it is relatively easy. If you know the information
source. The
Android development guide is almost completely useless regarding themes, for
example sample themes don't work.
This blog entry from Brainflush is much more informative, at least its examples
work. The source that helped me the most was the actual Android XML fileset that
defines the themes. If you have access to the Android source tree, the Android system
resources can be found under the
platform\frameworks\base\core\res\res directory. The relevant files are styles.xml
under the values subdirectory and the content of the drawable subdirectory.
If you check the styles.xml in the res/values directory in our example program,
you will see that modifying the color scheme of the ListView is a quite complicated,
multi-step process. First of all, in res/values/styles.xml, the ListView style is
overridden with the android:listViewStyle property. The ListViewStyle (MyListView)
in turn references a list selector (android:listSelector) that is stored in the
res/drawable directory. That selector defines color schemes for all the possible
state combination of the list row. To increase the fun, the resource compiler screwed
up the image IDs in the R.java file if the weather icon image files were not at
the beginning of the file name list, hence the bizarre names in the drawable subdirectory.
Now what we need more is a transition that refers a
9-patch background image (block blue in our case) for the selected row and we
are ready.
Don't say that it was not easy.
PS: I apologize for the hideous colors. :-)

Taken from
mylifewithandroid blog
|
How to use custom de...
lets say i change this app to days to...
How to display a JPG...
Is that posible to zoom in and drag p...
Making a custom Andr...
Cool - I will use it carefully i promise
How to display a JPG...
problem in image loading - i have exe...
Introducing Calculon...
Thank You for your contribution - Hi,...