1

我对 Light 主题和快速滚动的 ListView 有一点问题。如下图所示,当使用 Light 主题时,拖动滚动条时当前字母的弹出窗口包含深灰色背景上的黑色文本,使其很难阅读并且看起来很丑。

如果我在 Theme 中覆盖 android:textColorPrimary 它会改变颜色,但 ListView 中的所有项目以及应用程序中其他地方的其他 UI 元素也会改变颜色,因此这不是一个可行的解决方案。

我正在使用GreenDroid及其关联的类,但通过源代码查看,它似乎只使用标准 ListView,因此不太可能成为问题。

我还发现了这个问题,这使得它看起来很可能不是 GreenDroid 问题,但不幸的是,作者在评论中给出的解决方案没有足够详细地解释如何解决它。

关于如何解决这个问题的任何想法?

谢谢,丹尼尔

弹出问题示例

4

2 回答 2

2

最简单的方法是定义一个仅应用于 ListActivity 的特殊主题,如下所示。

<style name="Theme.MyApp" parent="@style/Theme.GreenDroid.Light.NoTitleBar">
    ...
</style>

<style name="Theme.MyApp.TweakedItems" parent="@style/Theme.MyApp">
    ...
    <!-- Default color for Android Dark Theme -->
    <item name="android:textColorPrimary">@android:color/primary_text_dark</item>
</style>

然后,您可以修改 GreenDroid 中的任何 ItemView 以应用不同的颜色。

<?xml version="1.0" encoding="utf-8"?>
<greendroid.widget.itemview.TextItemView
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="?attr/gdTextItemViewStyle"
    android:id="@+id/gd_text"
    android:layout_height="?attr/gdItemViewPreferredHeight"
    android:minHeight="?attr/gdItemViewPreferredHeight"
    android:paddingLeft="?attr/gdItemViewPreferredPaddingLeft"

    android:singleLine="true"
    android:ellipsize="end"

    android:gravity="center_vertical"
    android:textColor="#000000" />

从 API 级别 11 开始,您可以使用fastScrollTextColor更改颜色

于 2012-02-10T03:40:16.817 回答
1

我在这里找到了答案:

https://gist.github.com/DHuckaby/d6b1d9c8e7f9d70c39de

public class CustomListView extends ListView {

    public CustomListView(Context context, AttributeSet attrs) {
        super(new ContextThemeWrapper(context, R.style.CustomListView), attrs);
    }
}

样式.xml

<resources>
    <style name="CustomListView" parent="@style/GlobalTheme">
        <item name="android:textColorPrimary">?android:textColorPrimaryInverse</item>
    </style>
</resources>
于 2013-05-19T15:12:25.700 回答