Android使用主题更改颜色

4

我正在尝试在我的应用程序中提供用户可设置的颜色。白色文本和黑色背景以及黑色文本和白色背景。我有多个布局,包括许多标准和自定义适配器的列表视图。人们建议使用主题,但我没有成功地更改所有布局中的文本颜色。有人能否向我展示一个实际的主题布局来完成这个任务?我可以轻松地使用myscreen.setBackGroundColor(xx)更改背景颜色,但是当我尝试使用主题更改文本时,它也会更改下拉框文本。

2个回答

13

使用

    <item name="android:spinnerStyle">@style/StandardSpinner</item>
    <item name="android:spinnerItemStyle">@style/StandardSpinnerItem</item>
    <item name="android:spinnerDropDownItemStyle">@style/StandardSpinnerDropDownItem</item>

在您的主题中,这将覆盖文本样式。
您的样式将类似于这样:
<style name="StandardSpinner" parent="@android:style/Widget.Spinner">
    <item name="android:background">@drawable/spinner</item>
</style>

<style name="StandardSpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem">
    <item name="android:textAppearance">@style/GameDisplayText</item>
    <item name="android:gravity">center_vertical|center_horizontal</item>
</style>

<style name="StandardSpinnerDropDownItem" parent="@android:style/Widget.DropDownItem.Spinner">
    <item name="android:textAppearance">@style/GameDisplayText</item>
</style>

0

只是一些额外的信息,为了将您的主题指向应用程序,您需要在AndroidManifest.xml中定义它。

例如:

<application android:icon="@drawable/icon" android:label="@string/app_name"    android:theme="@style/Theme">

你应该重用一些默认的样式属性,所以将Android默认主题声明为你自己的父主题。
在values/styles.xml或者你的主题文件所在的任何地方。
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme" parent="@android:style/Theme">
         <!-- Widget styles -->
         <item name="android:spinnerStyle">@android:style/Widget.Spinner</item>
         <item name="android:spinnerDropDownItemStyle">@style/Widget.DropDownItem.Spinner</item>
         <item name="android:spinnerItemStyle">@android:style/Widget.TextView.SpinnerItem</item>
    </style>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接