Изменение внешнего вида элементов ‹PreferenceScreen /›

Вопрос:

Как изменить размер текста, используемый для атрибута android:title, когда элементы Preference перечислены в меню настроек?

Подробности:

Экран настроек в моем приложении хорошо выглядит на планшете Nexus 7 (Jelly Bean), но почти непригоден на телефоне Motorola Defy (Gingerbread). Я использую стандартный подход PreferenceActivity, подробно описанный в руководствах Android Dev.

Я искал в Интернете несколько дней, но не нашел решения, которое заставило бы все выглядеть по-другому.

На телефоне Android-Gingerbread;

1) текст <EditTextPreference android:title .../> слишком большой и не переносит слова.

2) стандартные значки «стрелка вниз» рядом с каждым элементом предпочтений выглядят странно и смещены. (смещенное изображение значка)

3) тема — Holo, но большая пустая область под последним элементом предпочтений по какой-то причине имеет некрасивый светло-серый цвет.

Я попытался определить ресурсы style.xml и указать style="@style/StyleName" в файле preferences.xml, чтобы изменить атрибут android:textSize, но это ничего не дало.

Ниже приведен XML для моего экрана предпочтений:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/SettingsMenu" >

    <PreferenceCategory 
        android:key="pref_key_mixProportions" 
        android:title="@string/pref_title_mixProportions"
        style="@style/SettingsMenu"
        >
        <EditTextPreference 
            android:key="pref_key_binderPortion"
            android:title="@string/pref_title_binderPortion"
            android:dialogTitle="Binder Portion"
            android:inputType="numberDecimal"
            android:maxLines="2"
            android:scrollHorizontally="false"
            android:defaultValue="1"
            android:persistent="true" />

        <EditTextPreference 
            android:key="pref_key_premixPortion"
            android:title="@string/pref_title_premixPortion"
            android:dialogTitle="Premix Portion"
            android:inputType="numberDecimal"
            android:layout_width="wrap_content"
            android:maxLines="2"
            android:scrollHorizontally="false"
            android:defaultValue="5"
            android:persistent="true"/>
    </PreferenceCategory>

    <PreferenceCategory 
        android:key="pref_key_binderProperties" 
        android:title="@string/pref_title_binderProperties">
        <EditTextPreference 
            android:key="pref_key_binderDensity"
            android:title="@string/pref_title_binderDensity"
            android:dialogTitle="Density of Binder powder (kg/m^3)"
            android:inputType="numberDecimal"
            android:defaultValue="2850"
            android:persistent="true"
            android:summary="@string/pref_summary_binderDensity"/>
        <EditTextPreference 
            android:key="pref_key_binderBagWeight"
            android:title="@string/pref_title_binderBagWeight"
            android:dialogTitle="Weight of Binder per bag (kg)"
            android:inputType="numberDecimal"
            android:defaultValue="20"
            android:persistent="true" />

    </PreferenceCategory>

    <PreferenceCategory 
        android:key="pref_key_premixProperties" 
        android:title="@string/pref_title_premixProperties">
        <EditTextPreference 
            android:key="pref_key_premixDensity"
            android:title="@string/pref_title_premixDensity"
            android:dialogTitle="Density of Sand and Aggregate Mix (kg/m^3)"
            android:inputType="numberDecimal"
            android:defaultValue="1850"
            android:persistent="true"
            android:summary="@string/pref_summary_premixDensity"/>

    </PreferenceCategory>

</PreferenceScreen>

Мой файл styles.xml содержит:

<style name="SettingsMenu">
    <item name="android:textSize">15sp</item>
</style>

Но текст выглядит одинаково независимо от того, какое значение я даю для размера.

Я видел, что некоторые люди предлагают использовать <PreferenceScreen android:layout=".... />, но я не нашел четкого объяснения, как это делается.

Кто-нибудь может помочь?


person Sound Conception    schedule 20.07.2013    source источник
comment
отредактируйте свой пост со ссылкой на изображение в нем и я встрою его или просто опубликую URL-адрес здесь. Если вам нужно сначала загрузить куда-то, загрузите на imgur   -  person ObieMD5    schedule 20.07.2013
comment
тема Holo dark — в Android 2.3 нет Theme.Holo или Theme.Holo.Dark.   -  person CommonsWare    schedule 20.07.2013
comment
Попробуйте использовать ActionBarSherlock. Это эмулирует стили из более новых версий Android.   -  person rekire    schedule 21.07.2013
comment
HoloEverywhere — это то, что вам нужно, если вы пытаетесь воспроизвести стиль Holo на всех платформах.   -  person hwrdprkns    schedule 21.07.2013
comment
Я загрузил изображение на imgur и отредактировал пост.   -  person Sound Conception    schedule 21.07.2013
comment
Я переписал приложение для использования ActionBarSherlock. Это устранило проблему с отображением значков. Спасибо, рекир. Насколько я читал, я думаю, что HoloEverywhere также сработал бы, как предложил hwrdprkns. К сожалению, это не решило мою проблему с размером шрифта заголовка Preference, поэтому я попытаюсь создать собственный экран предпочтений.   -  person Sound Conception    schedule 30.07.2013


Ответы (1)


Добавьте файл стиля в объявление манифеста рядом с действием предпочтений - что-то вроде

<activity
    android:name="com.example.PrefsActivity"
    android:theme="@style/PreferencesStyle" >
</activity>

это поможет

person crazyPixel    schedule 01.10.2013