Цвет текста записей ListPreference - белый, а не черный - PullRequest
0 голосов
/ 28 января 2020

У меня есть настройки активности

public class SettingsActivity extends BaseActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

И фрагмент:

public class SettingsFragment extends PreferenceFragmentCompat {


    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.settings, rootKey);
    }
}

activity_settings. xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

        <TextView
            android:id="@+id/activitySettings_updateFrequencyValueText"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintBottom_toBottomOf="@id/view_settings_fragment"
            android:layout_marginBottom="0dp"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginTop="0dp"
            android:ellipsize="marquee"
            android:gravity="center"
            android:textSize="15sp"
            android:paddingStart="10dp"
            android:paddingLeft="10dp"
            >
        </TextView>
        <fragment
            android:name="com.myapp.SettingsFragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/view_settings_fragment"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            android:layout_marginBottom="0dp"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginTop="0dp"
            />

</androidx.constraintlayout.widget.ConstraintLayout>

настройки. xml :

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <ListPreference
        android:key="bus_update_frequency"
        android:title="@string/bus_update_frequency"
        android:summary="@string/bus_update_frequency_desc"
        android:entries="@array/bus_update_frequency_entries"
        android:entryValues="@array/bus_update_frequency_values"
        android:defaultValue="10 seconds"
        />
</PreferenceScreen>

res / values ​​/ arrays. xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="bus_update_frequency_entries">
        <item>10 seconds</item>
        <item>20 seconds</item>
        <item>30 seconds</item>
        <item>40 seconds</item>
        <item>50 seconds</item>
        <item>60 seconds</item>
    </string-array>
    <string-array name="bus_update_frequency_values">
        <item>10</item>
        <item>20</item>
        <item>30</item>
        <item>40</item>
        <item>50</item>
        <item>60</item>
    </string-array>
</resources>

Все отлично работает, страница настроек выглядит так: Settings Page

Но когда вы открываете ListPreference, текст почему-то становится белым. Похоже на это, вы можете видеть, что текст там, когда вы выделите его.

Settings Page ListPreference

Я не понял, как изменить его на черный, поскольку ListPreference не имеет атрибута textColor. Любые идеи?

РЕДАКТИРОВАТЬ :

Я думаю, что вызывает это мои диалоговые окна предупреждения являются бордовый цвет на панели действий, с белым текстом. Итак, как мне изменить либо цвет фона ListPreference на этот цвет, либо изменить цвет текста с помощью тем?

EDIT2 :

Неважно, меняя цвет Текст предупреждения не изменил цвет текста ListPreference.

1 Ответ

0 голосов
/ 29 января 2020

Понятия не имею, что послужило причиной этой проблемы, но я все-таки решил ее

Чтобы решить эту проблему, мне нужно было создать собственную тему:

    <style name="PreferencesTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:textColorPrimary">@color/primaryBlack</item>
        <item name="android:textColorSecondary">@color/colorPrimary</item>
        <item name="android:textColorTertiary">@color/primaryBlack</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorPrimary</item>
        <item name="textColorAlertDialogListItem">@color/primaryBlack</item>
    </style>

    <style name="PreferencesTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="PreferencesTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

, а затем установить тема в методе создания действия:

public class SettingsActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.PreferencesTheme);
        super.onCreate(savedInstanceState);

Специфический c элемент, который сделал текст диалога черным, был следующим:

<item name="textColorAlertDialogListItem">@color/primaryBlack</item>
...