Пользовательские заголовки предпочтений
У меня есть простой экран настроек, подобный этому
У меня уже есть настройка стиля и используется в другом месте приложения.
#000000 bold 12sp #cccccc 6px 6px 12px
и вот моя деятельность
- jackson: как добавить настраиваемое свойство в JSON без изменения POJO
- Укажите JDK для Maven для использования
- Прочитать размер шрифта в настройках
- Как сохранить / сериализовать пользовательский class в файл настроек?
- Пользовательский путь для user.config
public class PreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.layout.preferences); } }
Как применить свой стиль к заголовку PreferenceCategory
?
- Как открыть настройки телефона при нажатии кнопки?
- Шифрование настроек приложения в web.config
- Java: java.util.Preferences Failed
- Сохранить настройки в приложении .NET Winforms
- MySQL слишком длинный усечение / ошибка настройки varchar
- Android: создание пользовательских настроек
- Мгновенный запуск в Android Studio 2.0 (как отключить)
- Как отобразить версию версии приложения в наборе параметров приложения?
Вы должны взглянуть на 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