Как изменить цвет текста всплывающей буквы при использовании ListView с включенной быстрой прокруткой? - PullRequest
1 голос
/ 08 января 2012

У меня небольшая проблема с темой Light и быстрой прокруткой ListView.Как вы можете видеть на изображении ниже, при использовании темы «Свет» всплывающее окно для текущей буквы при перетаскивании полосы прокрутки содержит черный текст на темно-сером фоне, что делает его очень трудным для чтения и просто уродливым.

Если я переопределяю android: textColorPrimary в Теме, он меняет цвет, но при этом меняются все элементы в ListView, а также другие элементы пользовательского интерфейса в другом месте приложения, поэтому это не жизнеспособное решение.

IЯ использую GreenDroid и связанные с ним классы, но просматривая исходный код, кажется, что он просто использует стандартный ListView, поэтому вряд ли проблема.

Я также обнаружил этот вопрос , из-за которого кажется вероятным, что это не проблема GreenDroid, но, к сожалению, решение, данное автором в комментарии, не объясняет достаточно подробно, как это исправить.

Любые идеи каккак это решить?

Спасибо, Даниэль

Example of popup issue

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Самый простой способ сделать это - определить специальную тему, которую вы применяете только к 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>

Затем вы можете изменить любой ItemView из GreenDroid, чтобы применить другой цвет.

<?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

1 голос
/ 19 мая 2013

Я нашел ответ здесь:

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>
...