Пользовательские заголовки предпочтений

У меня есть простой экран настроек, подобный этому

        

У меня уже есть настройка стиля и используется в другом месте приложения.

  #000000 bold 12sp #cccccc 6px 6px 12px  

и вот моя деятельность

 public class PreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.layout.preferences); } } 

Как применить свой стиль к заголовку PreferenceCategory ?

Вы должны взглянуть на Preference.Category style:

  

Давайте посмотрим на файл preference_category.xml :

   

Таким образом, вам нужно создать собственную тему, которая расширяет Theme android по умолчанию и переопределяет значение ListHeader с ListHeader стиля ListHeader . Затем примените эту тему к Activity, которая расширяет PreferenceActivity .


Вот как вы можете это сделать.

Во-первых , в вашем styles.xml добавьте следующий код:

   

Затем в вашем AndroidManifest.xml добавьте тему к вашей предпочтению:

   ...  

Вот скриншот:

введите описание изображения здесь

@inazaruk дал ответ достаточно хорошо, но с недавних обновлений, ADT 18 and above , есть некоторые ограничения на styles дающие ошибку

Error retrieving parent for item: No resource found that matches the given name '@android:style/Widget.TextView.ListSeparator'.

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

     

Сложение его, как описано в ответе инзазаarm, достаточно просто, но оно только изменяет стиль текста в заголовке, оно не предлагает способ указать совершенно новый макет (стиль не будет применяться к элементу layout ). Однако, если вы расширяете class, существует простое решение:

 public class MyPreferenceCategory extends PreferenceCategory { public MyPreferenceCategory(Context context) { super(context); setLayoutResource(R.layout.yourlayout); } public MyPreferenceCategory(Context context, AttributeSet attrs) { super(context, attrs); setLayoutResource(R.layout.yourlayout); } } 

и просто используйте это вместо оригинальной PreferenceCategory при определении макета настроек.

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

      1      

Как и ответ Габора, но вместо расширения PreferenceCategory вы можете сделать вот так: 1. Сделайте свой собственный макет. Я назвал его preference_category.xml :

      1      

Важно: макет должен содержать текстовое представление с этим id: android: id = “@ + android: id / title”

2. и в предпочтении добавьте эту строку: android: layout = “@ layout / preference_category”

    ... // other preferences in the category   
  • Установка DEBUG = False вызывает ошибку 500
  • избегайте строки, напечатанной на консоли, усеченной (в RStudio)
  • Где хранится свойство .Settings.Default?
  • Как добавить значки в Предпочтения
  • Альтернатива предпочтениям на Java
  • Значок меню параметров Android не будет отображаться
  • Где я должен хранить специальные настройки приложения?
  • Сохранение и загрузка Java Swing
  • Как тестировать блок с различными настройками в Django?
  • Позвоните в официальное приложение * Настройки * из моего приложения на iPhone.
  • VIM Отключить автоматическую новую строку в конце файла
  • Давайте будем гением компьютера.