Эта проблема оказалась намного сложнее, чем кажется на первый взгляд, так как она была проблемой не на всех устройствах, кроме нескольких.
При создании пользовательского предпочтения путем его превращения в подкласс предпочтения, а такжеиспользуйте пользовательский макет, определенный в XML-файле в res / layout, и используйте этот макет в onCreateView () в пользовательских настройках, похоже, вы полностью потеряете информацию о макете, которую обычно имеют Preference-s.Ничего странного в этом нет, но если вам все еще нужен заголовок (вместе с новым материалом), как вы можете указать размер этого заголовка, если хотите, чтобы он был такого же размера, как и для других предпочтений?Я был уверен, что нашел правильный ответ, установив textAppearance в textAppearanceLarge (либо в XML-файле макета, который кажется более подходящим, либо в коде Java в классе Preference), и это прекрасно работает на большинстве устройств.
Это из файла макета пользовательской настройки:
<TextView
android:id="@+android:id/title"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
>
</TextView>
И это из CustomPreference.onCreateView ():
LayoutInflater mInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout layout = (RelativeLayout)mInflater.inflate(R.layout.custompreference, parent, false);
// Setting up new stuff
return layout;
Это работает, и я могу изменить размер заголовкав Small или Medium, и мне не нужен код Java для заголовка в пользовательском классе Preference.textAppearanceLarge составляет 22 dp, что, по-видимому, является размером заголовков Preference на большинстве устройств.
Но на некоторых, например, HTC Sensation и Desire S, заголовок Preference меньше.Название пользовательских предпочтений слишком велико на этих устройствах.Таким образом, макеты для нестандартных предпочтений явно не используют textAppearanceLarge, а что-то еще.
Теперь у меня вопрос: что они используют?Где я могу получить его для использования в моих пользовательских преференциях?Я искал в Интернете, как сумасшедший, но я просто не могу найти ответ.Все примеры, которые я могу найти, используют textAppearanceLarge (или просто 22dp), вероятно потому, что никто никогда не замечал, что он не всегда работает правильно.