如何让用户在android列表视图中选择主题?

时间:2010-06-10 17:25:09

标签: android themes

我有一个包含两个标签的列表视图,标题和副标题。我希望有深色和浅色背景作为用户选项。标题有textAppearanceMedium,副标题有textAppearanceSmall。我希望风格MyTheme.Dark有白色文字和MyTheme.Light有黑色文字。有没有办法为同一个TextView小部件定义多个textAppearance属性?

<style name="MyTheme.Dark">
    <item name="android:windowBackground">@color/black</item>
    <item name="android:colorBackground">@color/black</item>
    <item name="android:background">@color/black</item>
    <item name="android:divider">@color/white</item>
        --cannot put textAppearance here since it is different for title and subtitle
    </style>

3 个答案:

答案 0 :(得分:4)

供将来参考......

在values / themes.xml中:

<style name="MyTheme.Dark">
    <item name="textColorTitle">@color/white</item>
</style>
<style name="MyTheme.Light">
    <item name="textColorTitle">@color/black</item>
</style>

在values / attrs.xml中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr
        name="textColorTitle"
        format="reference|color" />
</resources>

在layout / my_list_row.xml中,使用textColorTitle值作为文本颜色,如下所示:

android:textColor="?textColorTitle"

如果不起作用,请告诉我。它对我有用。

答案 1 :(得分:0)

我自己是Android的初学者,我不确定我是不是在这里做自己的屁股,但为什么不使用android:textColor属性?

<style name="MyTheme.Dark">
    <item name="android:windowBackground">@color/black</item>
    <item name="android:colorBackground">@color/black</item>
    <item name="android:background">@color/black</item>
    <item name="android:divider">@color/white</item>
    <item name="android:textColor">@color/white</item>
</style>

答案 2 :(得分:0)

我认为最好的方法是为不同的颜色和主题设置不同的布局xml。根据用户选择加载布局xml。我不喜欢这个,但我没有找到任何替代方案。