使用启用了快速滚动的ListView时,如何更改字母弹出窗口的文本颜色?

时间:2012-01-08 15:33:37

标签: android android-listview greendroid

我对Light主题和快速滚动ListView有轻微问题。正如您在下图中所看到的,当使用Light主题时,拖动滚动条时弹出当前字母会在深灰色背景上包含黑色文本,这使得它很难阅读并且看起来很难看。

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

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

我还发现了this question,这使得它看起来很可能不是GreenDroid问题,但不幸的是,作者在评论中给出的解决方案并未详细解释如何修复它。

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

谢谢, 丹尼尔

Example of popup issue

2 个答案:

答案 0 :(得分: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 Level 11开始,您可以使用fastScrollTextColor

更改颜色

答案 1 :(得分: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);
    }
}

styles.xml

<resources>
    <style name="CustomListView" parent="@style/GlobalTheme">
        <item name="android:textColorPrimary">?android:textColorPrimaryInverse</item>
    </style>
</resources>