Сводка настроек Android по умолчанию цвет? - PullRequest
5 голосов
/ 02 ноября 2010

Я установил свое приложение в реальном телефоне, и хотя в эмуляторе все тексты сводок настроек кажутся одинаковыми, в реальном телефоне цвет отличается (какой-то синий ...но я думаю, это зависит от модели телефона).

Как я могу установить этот цвет для моего компонента пользовательских настроек?(Я реализовал собственную панель поиска, и ее цвет текста сводки отличается от цвета текста всех других компонентов ...).

Спасибо!

Ответы [ 6 ]

4 голосов
/ 01 сентября 2011
Preference pUpdate = findPreference("sys_setting_update");
pUpdate.setSummary(Html.fromHtml("<font color=\"#B0C4DE\">This is content</font>"));

используйте Html.fromHtml("<font color=\"#B0C4DE\">This is content</font>") для установки значения

3 голосов
/ 03 января 2012

Я нашел способ извлечь цвет по умолчанию, используемый устройством Android, на котором запущено ваше приложение. Он немного сложен и требует, чтобы вы получили цвет, отображаемый в другом Сводном окне предпочтений вашей деятельности, и сохранили его.во время выполнения.

Затем вы можете использовать тот же цветовой код в других представлениях других предпочтений, гарантируя, что вы всегда получите тот же цветовой код Android, назначенный стандартным предпочтениям.Вот как я это сделал:

Моя деятельность по настройкам имеет обычную CheckBoxPreference, которую я использую для активации или деактивации службы.Я расширил CheckBoxPreference следующим образом, поэтому мое расширение извлекает в rutime цвет по умолчанию, который Android, наконец, дал сводке этого CheckBoxPreference:

public class MyCheckBoxPreference extends android.preference.CheckBoxPreference {

    private static int sSummaryColor = Color.WHITE;
    private static boolean sInitialized = false;

    public MyCheckBoxPreference(Context context) {
        super(context);
    }

    public MyCheckBoxPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override    
    public void onBindView(View view) {
        super.onBindView(view);
        if (!sInitialized) {
            sSummaryColor = getSummaryColor(view);
            sInitialized = true;
        }
    }

    private int getSummaryColor(View view) {

       int color = Color.WHITE;

        // Gets the color android gave to the summary by default
        TextView summaryView = (TextView) view.findViewById(android.R.id.summary); 
        if (summaryView != null) {
           ColorStateList list = summaryView.getTextColors();
            if (list != null) {
                color = list.getDefaultColor();
            }
        }
        return color;
    }

    public static int getSummaryColor() {
        return sSummaryColor;
    }
}

В своем файле Preferences.xml я создаю это предпочтение как MyCheckBoxPreference вместо просто CheckBoxPreference:

<org.yourpackage.MyCheckBoxPreference
                android:title="@string/preference_title_activate" 
                android:defaultValue="false" 
                android:summary="@string/preference_summary_activate_off" 
                android:summaryOff="@string/preference_summary_activate_off"
                android:key="preference_activate">
</org.yourpackage.MyCheckBoxPreference>

MyCheckBoxPreference необходимо создать один раз перед получением сводного цвета с помощью MyCheckBoxPreference.getSummaryColor ().

Теперь вы можете установить цвет других пользовательских настроек из onBindView (View):

public class MyCustmizedPreference extends Preference {
    public MyCustmizedPreference (Context context) {
        super(context);
        setLayoutResource(R.layout.my_customized_preference);
    }

    @Override
    public void onBindView(View view) {
        super.onBindView(view);

        TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
        if (summaryView != null) {
            summaryView.setTextColor(MyCheckBoxPreference.getSummaryColor());
        }        
    }
}

Это на самом деле работает под Samsung Galaxy S. Я также проверял, что он ничего не нарушаетпод эмулятором.

2 голосов
/ 29 марта 2011

Телефоны Samsung Galaxy S имеют собственную схему предпочтений с цветом текста, указанным для строки «Сводка».Даже если указан TextAppearance.Small, атрибут textColor макета переопределяет внешний вид текста.

2 голосов
/ 14 ноября 2010

Я нашел это: android:textAppearance="?android:attr/textAppearanceLarge" и android:textAppearance="?android:attr/textAppearanceSmall" кажется, добиваются цели.

1 голос
/ 08 ноября 2010

Я не думаю, что это возможно. Я могу изменить цвет фона и цвет текста заголовка, но не цвет сводки.

Справочная информация:

getListView().setBackgroundColor(Color.TRANSPARENT);

Текст заголовка:

Preference yourpreference = findPreference("yourpreference");
TextView tv = (TextView)yourpreference.getView(null, getListView());
tv.setTextColor(...);

Извините, я не мог больше помочь ...

0 голосов
/ 06 декабря 2014

У меня была та же проблема, и я экспериментировал со стилем моего пользовательского поиска.Наконец, эти строки в onCreateView методе seekBarPreference.java показывают сводку настроек с цветом текста по умолчанию:

TextView summaryText = new TextView(getContext());
summaryText.setText(getSummary());
summaryText.setTextAppearance(getContext(), android.R.style.TextAppearance_Small);

Я использую его на preference_screen.xml:

<com.asdasf.SeekBarPreferencias
        android:key="@string/pref_seekBar_distance_key"
        android:id="@+id/mySeekBarPreference"
        android:title="@string/pref_seekBar_distance_title"
        android:summary="@string/pref_seekBar_distance_summary"        
        android:max="50"
        android:defaultValue="12"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

Я надеюсь, что это будетбыть полезным ... (и это я хорошо написал мой первый ответ) С уважением!

...