Я думаю, нет необходимости использовать настраиваемый заголовок для изменения цвета фона в строке заголовка. проверьте этот пост
Deepthi Jabili
Я бы посмотрел на ответ Эдвинфада вместо устаревшего принятого.
zgc7009
Ответы:
186
Этот поток поможет вам создать собственную строку заголовка в XML-файле и использовать ее в своей деятельности.
редактировать
Вот краткое изложение содержания ссылки выше - это просто для установки цвета текста и фона строки заголовка - без изменения размера, без кнопок, просто самый простой образец
res / layout / mytitle.xml - это представление, которое будет представлять строку заголовка
<?xml version="1.0" encoding="utf-8"?><TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/myTitle"android:text="This is my new title"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textColor="@color/titletextcolor"/>
res / values / themes.xml - мы хотим сохранить тему Android по умолчанию, и нам просто нужно изменить цвет фона заголовка. Итак, мы создаем тему, наследующую тему по умолчанию, и устанавливаем стиль фона в наш собственный стиль.
В большинстве случаев просто предоставление ссылки очень дешево, а на stackoverflow не очень нравится ответ. Попытайтесь получить некоторые сведения из ссылки на этой странице. Вы будете получать все больше и больше знаний в сообществе, и даже если ссылка недоступна, ваш ответ по-прежнему содержит некоторые условия поиска, которые могут направить других людей в нужном направлении.
Януш
7
@Janusz: Вы совершенно правы - поэтому я обновил пост самым простым образцом, чтобы люди могли начать с него, вместо того, чтобы читать
ветку
3
После перезаписи стиля Android вам не нужно добавлять пользовательский заголовок из кода, если вы просто хотите изменить цвет фона
Януш,
1
Как сказал Януш, вам не нужно иметь настраиваемый вид, если вы хотите только переопределить используемый стиль (не добавляя новые представления). В этом случае вам также не нужно запрашивать FEATURE_CUSTOM_STYLE. Наконец, вы можете определить стиль на уровне приложения, чтобы применить его ко всем вашим действиям сразу. Кстати, спасибо за код.
Эрик Кок
2
это не меняет цвет фона заголовка, меняется только цвет текста. даже если я меняю цвет строки заголовка <color name = "titlebackgroundcolor"> # 3232CD </color>. Я делаю что-то неправильно?
Шайста Нааз,
18
Спасибо за это ясное объяснение, однако я хотел бы добавить немного больше к вашему ответу, задав связанный вопрос (на самом деле не хочу делать новый пост, поскольку этот является основанием для моего вопроса).
Я объявляю свою панель заголовка в суперклассе, из которого все остальные мои действия являются дочерними, поэтому мне нужно изменить цвет полосы только один раз. Я хотел бы также добавить значок и изменить текст в панели. Я провел некоторое тестирование, и мне удалось изменить либо одно, либо другое, но не оба одновременно (используя setFeatureDrawable и setTitle). Идеальным решением было бы, конечно, следовать объяснениям в потоке, приведенном в ссылке, но, поскольку я объявляю в суперклассе, у меня есть проблема из-за макета в setContentView и R.id.myCustomBar, потому что если я хорошо помните, я могу вызвать setContentView только один раз ...
ИЗМЕНИТЬ
Нашел мой ответ:
Для тех, кто, как и я, любит работать с суперклассами, потому что это отлично подходит для того, чтобы меню было доступно повсюду в приложении, здесь оно работает так же.
(вы должны объявить текстовое представление как защищенную переменную класса)
И тогда сила этого заключается в том, что везде в вашем приложении (если, например, все ваши действия являются дочерними элементами этого класса), вам просто нужно вызвать
customTitleText.setText("Whatever you want in title");
и ваша заголовок будет отредактирован.
В моем случае связанный XML (R.layout.customtitlebar):
Есть другой способ изменить цвет фона, однако это взлом, и он может не работать в будущих версиях Android, если изменится иерархия представления окна и его заголовок. Однако код не выйдет из строя, просто пропустите установку желаемого цвета в таком случае.
В своей деятельности, например в onCreate, выполните:
очень хороший и простой тоже. Но я хочу спросить вас об одном: этот делает это из кода, поэтому это немного задерживается. Чтобы избежать такой ситуации, мне придется писать все в xml и ничего в коде. не могли бы вы помочь мне в этом?
Shaista Naaz
Я думаю, что у вас есть решение в выбранном выше ответе. Вам необходимо определить настраиваемую тему для действия и установить для его android: windowTitleBackgroundStyle нужный цвет.
mikeplate
7
Этот код помогает программно изменить фон строки заголовка в Android. Измените цвет на любой, какой хотите.
Это было введено в API 11 (3.0 Honeycomb), который, безусловно, достаточно устарел на данный момент, чтобы считать это допустимым вариантом.
zgc7009
Но я все еще использую его во всех своих последних приложениях с targetSdkVersion = "23", не получая никакой устаревшей информации.
Эдвинфад
Безусловно, это на 100% нормально. Он ничем не заменен, но следует избегать его использования до API 11 (что очень немногие люди будут делать), по крайней мере, без библиотеки совместимости.
zgc7009
Принято к сведению. @ zgc7009
Edwinfad
1
Используйте getSupportActionBar () вместо этого, если вы используете AppCompatActivity
Как / где я могу создать собственную строку заголовка?
Thizzer
2
Загляните в platforms/android-2.1/data/res/layout/screen.xmlSDK. Вроде бы определение там названия. Вы можете часто проверять такие макеты и заимствовать
style="?android:attr/windowTitleStyle"
стили, которые затем можно использовать и переопределить в своих собственных TextView.
Вы можете даже выбрать заголовок для прямой настройки, выполнив:
TextView title =(TextView)findViewById(android.R.id.title);
Похоже, что с Android 5.0 (уровень API 21) все стало лучше / проще.
Я думаю, что вы ищете что-то вроде этого:
<stylename="AppTheme"parent="AppBaseTheme"><!-- Top-top notification/status bar color:--><!--<item name="colorPrimaryDark">#000000</item>--><!-- App bar color:--><item name="colorPrimary">#0000FF</item></style>
Ответы:
Этот поток поможет вам создать собственную строку заголовка в XML-файле и использовать ее в своей деятельности.
редактировать
Вот краткое изложение содержания ссылки выше - это просто для установки цвета текста и фона строки заголовка - без изменения размера, без кнопок, просто самый простой образец
res / layout / mytitle.xml - это представление, которое будет представлять строку заголовка
res / values / themes.xml - мы хотим сохранить тему Android по умолчанию, и нам просто нужно изменить цвет фона заголовка. Итак, мы создаем тему, наследующую тему по умолчанию, и устанавливаем стиль фона в наш собственный стиль.
res / values / styles.xml - здесь мы устанавливаем тему для использования желаемого цвета для фона заголовка.
res / values / colors.xml - установите здесь желаемый цвет
В AndroidMANIFEST.xml установите атрибут темы либо в приложении (для всего приложения), либо в тегах действия (только это действие).
Из Activity (называемого CustomTitleBar):
источник
Спасибо за это ясное объяснение, однако я хотел бы добавить немного больше к вашему ответу, задав связанный вопрос (на самом деле не хочу делать новый пост, поскольку этот является основанием для моего вопроса).
Я объявляю свою панель заголовка в суперклассе, из которого все остальные мои действия являются дочерними, поэтому мне нужно изменить цвет полосы только один раз. Я хотел бы также добавить значок и изменить текст в панели. Я провел некоторое тестирование, и мне удалось изменить либо одно, либо другое, но не оба одновременно (используя setFeatureDrawable и setTitle). Идеальным решением было бы, конечно, следовать объяснениям в потоке, приведенном в ссылке, но, поскольку я объявляю в суперклассе, у меня есть проблема из-за макета в setContentView и R.id.myCustomBar, потому что если я хорошо помните, я могу вызвать setContentView только один раз ...
ИЗМЕНИТЬ Нашел мой ответ:
Для тех, кто, как и я, любит работать с суперклассами, потому что это отлично подходит для того, чтобы меню было доступно повсюду в приложении, здесь оно работает так же.
Просто добавьте это в свой суперкласс:
(вы должны объявить текстовое представление как защищенную переменную класса)
И тогда сила этого заключается в том, что везде в вашем приложении (если, например, все ваши действия являются дочерними элементами этого класса), вам просто нужно вызвать
и ваша заголовок будет отредактирован.
В моем случае связанный XML (R.layout.customtitlebar):
источник
Есть другой способ изменить цвет фона, однако это взлом, и он может не работать в будущих версиях Android, если изменится иерархия представления окна и его заголовок. Однако код не выйдет из строя, просто пропустите установку желаемого цвета в таком случае.
В своей деятельности, например в onCreate, выполните:
источник
Этот код помогает программно изменить фон строки заголовка в Android. Измените цвет на любой, какой хотите.
источник
в приведенном выше коде вы можете попробовать использовать заголовок вместо заголовка, это повлияет на все действия в вашем приложении
источник
Полагаю, нет. Вы можете создать действие без названия и создать собственную строку заголовка в макете действия.
Отметьте это , строка 63 и ниже:
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)
устанавливает customview вместо просмотра заголовка по умолчанию.
источник
Загляните в
platforms/android-2.1/data/res/layout/screen.xml
SDK. Вроде бы определение там названия. Вы можете часто проверять такие макеты и заимствоватьstyle="?android:attr/windowTitleStyle"
стили, которые затем можно использовать и переопределить в своих собственных TextView.Вы можете даже выбрать заголовок для прямой настройки, выполнив:
источник
Попробуйте использовать следующий код
также используйте эту ссылку, она очень полезна: http://nathanael.hevenet.com/android-dev-changing-the-title-bar-background/
источник
Существует более простая альтернатива - изменить цвет строки заголовка, используя библиотеку поддержки v7 appcompat, предоставленную Google.
См. Эту ссылку о том, как настроить эту библиотеку поддержки: https://developer.android.com/tools/support-library/setup.html
Как только вы это сделаете, достаточно добавить следующие строки в ваш файл res / values / styles.xml:
(при условии, что titlebackgroundcolor определен в вашем res / values / colors.xml, например:
)
источник
Похоже, что с Android 5.0 (уровень API 21) все стало лучше / проще.
Я думаю, что вы ищете что-то вроде этого:
См. Здесь для справки:
https://developer.android.com/training/material/theme.html#ColorPalette
источник
Я сделал это, изменив значения цвета стиля в "res" -> "values" -> "colors.xml"
Это изменит цвета для всего проекта, что меня устраивает.
источник
вы можете использовать это.
источник
Вставьте этот код после setContentView или в onCreate
если у вас есть цветовой код, используйте это;
если вы хотите использовать конкретный код из библиотеки цветов;
источник