Как я могу изменить размер шрифта в PreferenceScreen - PullRequest
18 голосов
/ 17 марта 2011
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
        android:title="First Category"
        android:textSize="20px">

        <CheckBoxPreference
            android:title="Checkbox Preference"
            android:defaultValue="false"
            android:summary="This preference can be true or false"
            android:key="checkboxPref" />

    </PreferenceCategory>
</PreferenceScreen>

Мне нужно изменить android:title размер шрифта PrefereceCategory, CheckboxPreference и android:summary.Эти теги не имеют атрибута android:textSize.Может ли кто-нибудь помочь мне, как получить это?

Ответы [ 6 ]

57 голосов
/ 06 мая 2011

Наконец я смог решить свою проблему, просто пройдя одну раскладку. Может быть, это будет кому-то полезно. Это мой модифицированный файл preference.xml, см. Код ниже. Мы можем применить свои собственные свойства к заголовку и резюме.

preference.xml:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
        android:title="First Category"
        android:textSize="20px"
        android:layout="@layout/mylayout">             

        <CheckBoxPreference
            android:title="Checkbox Preference"
            android:defaultValue="false"
            android:summary="This preference can be true or false"
            android:key="checkboxPref"
            android:layout="@layout/mylayout"/>

    </PreferenceCategory>
</PreferenceScreen>

mylayout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:id="@android:id/title"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="40sp"/>  

    <TextView android:id="@android:id/summary"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="26sp"/>

</LinearLayout>

Пожалуйста, спросите меня, есть ли вопросы ... Продолжайте улыбаться. Если это полезно, дайте мне один комментарий.

11 голосов
/ 16 апреля 2013

Для меня макет, размещенный praneetloke, заставил виджет исчезнуть из предпочтений, которые имеют связанный виджет, например, флажок.Существует LinearLayout с id / widget_frame, который необходим для виджета.Следующее работало у меня, на Android 2.3 через 4.2.2.Единственное изменение, которое мне нужно было сделать, было установить android: visibility = "ушел" в макете, который содержит значок предпочтения, который не был доступен в Gingerbread.макет здесь GrepCode /res/values/dimens.xml.Фактическое расположение элемента предпочтений здесь GrepCode /res/layout/preference_holo.xml.Обратите внимание, что существует также не голографическая версия с именем preference.xml.

4 голосов
/ 05 декабря 2012

Я изменил ответ Кумара на это для ICS и выше. Я поместил этот макет в values-v11 для API целевых устройств уровня 11+.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:id="@+android:id/title"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="18dp"
        android:textColor="?android:attr/textColorPrimary"
        android:paddingLeft="8dip"/>

    <TextView android:id="@+android:id/summary"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="14dp"
        android:textColor="?android:attr/textColorSecondary"
        android:paddingLeft="8dip"/>

</LinearLayout>
2 голосов
/ 10 декабря 2015

Вы можете взглянуть на макет, который используется на конкретной платформе, в папке макета, расположенной в:

<android-sdk>\platforms\android-<level>\data\res\layout

Макеты настроек начинаются с preference_ prefix.

0 голосов
/ 07 августа 2016

Просто небольшая ревизия кода макета.«@ + android: id / summary» вызывает для меня символ «Не удается разрешить».поэтому я удаляю знак «+» и код работает

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

    <TextView android:id="@android:id/title"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="40px"/>  

    <TextView android:id="@+android:id/summary"
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="26px"/>

</LinearLayout>
0 голосов
/ 29 ноября 2013

Посмотрите на мой ответ на это: Android PreferenceScreen заголовок в две строки .

Вы также можете изменить сам шрифт, если хотите. Просто добавьте это:

Typeface myTypeface = Typeface.createFromAsset(textView.getContext().getAssets(),"fonts/your_font_name.ttf");
    if (textView != null) {
        textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textView.getContext().getResources().getDimension(R.dimen.text_size_from_dimen));
        textView.setTypeface(myTypeface);
    }
...