Как изменить размер заголовка CheckBox или сделать его Wrap в XML-файле PreferenceScreen?

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

<CheckBoxPreference android:title="Language Detection (BETA)" android:defaultValue="false" android:summary="Automatically decide which language to use" android:key="lan_det_pref" android:textSize="15px" android:lines="4" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

Возможно, я что-то пропустил, но я попытался использовать количество других свойств без положительных результатов. Я пробовал android: singleLine, android: строки и т. Д., И ни один из них, похоже, не влияет на название предпочтения. Также существует способ уменьшить размер заголовка CheckBox?

Любая помощь будет принята с благодарностью.

Благодаря 🙂

Функция CheckBoxPreference не выводится из представления, поэтому обычные атрибуты вида не применяются.

Вместо этого CheckBoxPreference привязан к представлению, которое имеет предопределенный макет.

Вы можете получить класс из CheckBoxPreference и переопределить onBindView. В своем классе onBindView найдите представление CheckBox и настройте его атрибуты вида по своему вкусу.

 class MyCBPref extends CheckBoxPreference{ public MyCBPref( Context context, AttributeSet attrs){ super(context, attrs); } protected void onBindView( View view){ super.onBindView(view); makeMultiline(view); } protected void makeMultiline( View view) { if ( view instanceof ViewGroup){ ViewGroup grp=(ViewGroup)view; for ( int index = 0; index < grp.getChildCount(); index++) { makeMultiline(grp.getChildAt(index)); } } else if (view instanceof TextView){ TextView t = (TextView)view; t.setSingleLine(false); t.setEllipsize(null); } } } 

Затем в вашем макете укажите свой класс вместо CheckBoxPreference:

 <com.mycorp.packagename.MyCBPref android:title="..." ... /> 

Вы можете настроить ваш флажок следующим образом: MyPreference.xml

 <CheckBoxPreference android:key="testcheckbox" android:title="Checkbox Title" android:summary="Checkbox Summary..." android:layout="@layout/custom_checkbox_preference_layout"> </CheckBoxPreference> 

И custom_checkbox_preference_layout.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:gravity="center_vertical" android:paddingLeft="16dip" android:paddingRight="?android:attr/scrollbarSize"> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:orientation="horizontal"> <ImageView android:id="@+android:id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> </LinearLayout> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="6dip" android:layout_marginTop="6dip" android:layout_marginBottom="6dip" android:layout_weight="1"> <TextView android:id="@+android:id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="false" android:textAppearance="?android:attr/textAppearanceMedium" android:ellipsize="marquee" android:fadingEdge="horizontal" /> <TextView android:id="@+android:id/summary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@android:id/title" android:layout_alignLeft="@android:id/title" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="?android:attr/textColorSecondary" android:maxLines="4" /> </RelativeLayout> <!-- Preference should place its actual preference widget here. --> <LinearLayout android:id="@+android:id/widget_frame" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" /> </LinearLayout> 

Точка isroid: singleLine = "false" ".

Вы можете получить класс из CheckBoxPreference и переопределить onBindView . В своем классе onBindView найдите представление CheckBox и настройте его атрибуты вида на свой.

Intereting Posts
Создайте массив маркеров Google Maps V2 Genymotion 2.7.2 не работает после обновления Перетаскивание RecyclerView, которое заполняется из SQLiteDatabase Объединение двух или более .wav-файлов в android Приложение не открывает основную деятельность, когда оно было убито после нажатия кнопки «домой» в андроиде Скрыть мягкую клавиатуру при размытии, в телефоне Список всех действий в нашем приложении, работающих на устройстве Файл существует и каталог IS, но listFiles () возвращает null Как создать Celestia для Android? Утечка памяти, вызванная java.lang.ref.FinalizerReference Отключить такую ​​же политику происхождения в Android Chrome Desktop java app копирует и передает данные Android через USB Лучшие практики, чтобы сделать процесс покупки приложения в приложении для Android более сложным? Обычная аутентификация для доступа к ассемблему Переопределите onDraw, чтобы изменить способ создания рисунка (Android)