我为我的应用程序“App Manager”添加了一个主题选择器“Holo”和“Holo Light”(也许还有黑暗的动作栏)。现在我首先通过XML文件尝试它们。
我正在使用谷歌的支持库并试用主题,但无论我使用什么属性和主题,我的listView上的textViews颜色都有错误的颜色。
listView包含2个定义如下的TextView:
<TextView
android:id="@+id/appLabelTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/isSystemAppImageView"
android:layout_toRightOf="@+id/appIconImageView"
android:ellipsize="marquee"
android:text="label"
android:textAppearance="?android:attr/textAppearanceLarge"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/appDescriptionTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/appLabelTextView"
android:layout_below="@+id/appLabelTextView"
android:layout_toLeftOf="@+id/isSystemAppImageView"
android:ellipsize="marquee"
android:text="description"
android:textAppearance="?android:attr/textAppearanceSmall"
tools:ignore="HardcodedText" />
Theme.AppCompat.Light
和Theme.AppCompat
:
当我以编程方式执行所有操作时,以及当我使用ActionBarSherlock库时,也会发生相同的情况。
这是我使用的主题配置(这次尝试了ActionBarSherlock,但普通支持库也是如此):
<style name="BaseTheme" parent="@style/Theme.Sherlock.Light"></style>
<style name="AppTheme" parent="@style/BaseTheme">
<item name="android:listSeparatorTextViewStyle">@style/PreferenceListHeader</item>
<item name="android:windowBackground">@color/normal_window_background</item>
</style>
和清单:
<application
android:name="com.lb.app_manager.utils.App"
android:allowBackup="true"
android:description="@string/app_description"
android:hardwareAccelerated="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
我在此处显示的活动没有任何代码或XML将主题设置为与上面所描述的不同。
我试过检查样本,并发现XML和代码之间没有明显的区别。他们工作得很好......
另外,出于某种原因,偏好活动显示得很好。
ActionBarShelock库存在同样的问题。
怎么可能?应该怎么做来解决它?
答案 0 :(得分:1)
我找到了导致这个问题的原因。
它与任何XML或设置样式无关。
这是因为适配器的LayourInflater。我是通过应用程序上下文而不是活动之一创建的。
它还解释了为什么我对样本项目的测试工作正常,因为我检查了错误的东西......
答案 1 :(得分:0)
在Holo light主题和其他Light主题中,我们需要设置文本颜色才能正常工作..
<TextView
android:id="@+id/appLabelTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/isSystemAppImageView"
android:layout_toRightOf="@+id/appIconImageView"
android:ellipsize="marquee"
android:textcolor="#000"
android:text="label"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/appDescriptionTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/appLabelTextView"
android:layout_below="@+id/appLabelTextView"
android:layout_toLeftOf="@+id/isSystemAppImageView"
android:ellipsize="marquee"
android:textcolor="#000"
android:text="description"
android:textAppearance="?android:attr/textAppearanceSmall"
tools:ignore="HardcodedText" />
希望这会有效。试试这个,让我知道结果。
答案 2 :(得分:0)
我尝试了您使用Theme.AppCompat和Theme.AppCompat.Light提供的示例,并且它们都在API级别10和18上按预期正常工作。由于您没有提供完整代码,只有片段,它必须如果您的应用程序中存在额外的XML或代码,导致问题。
有几件事要检查:
从AppTheme定义中删除这些条目,以确保它们不会干扰并导致问题:
<item name="android:listSeparatorTextViewStyle">@style/PreferenceListHeader</item>
<item name="android:windowBackground">@color/normal_window_background</item>
您可能针对不同的API级别使用不同的样式定义。检查res / values-v11 / styles.xml,res / values-v14 / styles.xml等的内容以确保它们不会干扰