Чтобы использовать пользовательский заголовок, Toolbar
вам нужно только помнить, что Toolbar
это просто модная ViewGroup, поэтому вы можете добавить пользовательский заголовок следующим образом:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_top"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@color/action_bar_bkgnd"
app:theme="@style/ToolBarTheme" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Toolbar Title"
android:layout_gravity="center"
android:id="@+id/toolbar_title" />
</android.support.v7.widget.Toolbar>
Это означает, что вы можете стилизовать то, что TextView
захотите, потому что это просто обычный текст TextView
. Таким образом, в вашей деятельности вы можете получить доступ к названию следующим образом:
Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top);
TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title);
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
( см. Этот ответ ).Название панели инструментов является стилем. Любая настройка, которую вы делаете, должна быть сделана в теме. Я приведу вам пример.
Макет панели инструментов:
Стили:
источник
TextView
является немного хакерским, но ответный ответ - просто зло.Это просто, чтобы помочь объединить все части, используя @ MrEngineer13 ответ с комментариями @Jonik и @Rick Sanchez с правильным порядком, чтобы помочь легко достичь центрированного заголовка !!
Макет с
TextAppearance.AppCompat.Widget.ActionBar.Title
:Способ достижения с правильным заказом:
Пожалуйста, не забудьте высказать ответ @ MrEngineer13 !!!
Вот пример проекта ToolbarCenterTitleSample
Надеюсь помочь кому-нибудь еще;)
источник
Scrolling Activity
?у нас нет прямого доступа к заголовку панели инструментов TextView, поэтому мы используем отражение для доступа к нему.
источник
mTitleTextView
становитсяabcde12345
?Здесь текст заголовка зависит от подхода, чтобы найти
TextView
экземпляр изToolbar
.источник
Определите следующий класс:
... а затем просто используйте его вместо обычного,
Toolbar
как это:Вам все еще нужны эти 2 строки кода в вашем
Activity
(как со стандартнымиToolbar
):Это оно! Вам не нужно скрывать стандартный заголовок с выравниванием по левому краю, не нужно дублировать один и тот же XML-код снова и снова и т. Д., Просто используйте
CenteredToolbar
как если бы это было по умолчаниюToolbar
. Вы также можете установить свой собственный шрифт программно, поскольку теперь у вас есть прямой доступ кTextView
. Надеюсь это поможет.источник
centeredTitleTextView.setTextColor(...)
должен работатьLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
?Никто не упомянул об этом, но есть некоторые атрибуты для
Toolbar
:app:titleTextColor
для настройки цвета текста заголовкаapp:titleTextAppearance
для настройки внешнего вида текста заголовкаapp:titleMargin
для установки маржиИ есть другие определенные поля стороны, такие как
marginStart
, и т. Д.источник
<style name="customFontTextAppearanceStyle"> <item name="android:textSize">18sp</item> <item name="android:typeface">monospace</item>
и примените его на панели инструментовapp:titleTextAppearance="@styles/customFontTextAppearanceStyle"
app:titleTextAppearanc="style name"
наandroid.support.v7.widget.Toolbar
TAGЯ использую это решение:
источник
Без панели инструментов TextView мы можем настроить шрифт, используя приведенный ниже код
источник
источник
Планировка:
Код:
источник
Я решил это решение, и это следующие коды:
И вы можете изменить заголовок / метку, в Activity, напишите следующие коды:
TextView mTitle = (TextView) toolbarTop.findViewById (R.id.toolbar_title); mTitle.setText ( "@ строки / ....");
источник
Вы можете использовать как следующее
источник
Очень быстрый и простой способ установить пользовательский шрифт - использовать пользовательский
titleTextAppearance
сfontFamily
:Добавьте в styles.xml :
В папке res создайте папку шрифтов (например, varela_round_regular.ttf )
Прочтите официальное руководство, чтобы узнать больше https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
источник
Я не знаю, изменилось ли что-нибудь в библиотеке appcompat, но это довольно тривиально, не нужно размышлять.
источник
Решение, которое я использовал для этой проблемы:
Для центра тяжести я думаю, что было бы необходимо изменить параметры макета на match_parent по горизонтали, а затем:
источник
Обновление от ответа @ MrEngineer13: чтобы выровнять центр заголовка в любых случаях, включая значок гамбургера, меню опций, вы можете добавить
FrameLayout
панель инструментов следующим образом:источник
В XML попробуйте это:
В коде:
источник
Хотя добавление текстового представления на панель инструментов может решить проблему ограничения стиля заголовка, с ним есть проблема. Поскольку мы не добавляем его в макет, мы не слишком контролируем его ширину. Мы можем использовать либо wrap_content, либо match_parent.
Теперь рассмотрим сценарий, в котором у нас есть searchView как кнопка на правом краю панели инструментов. Если содержание заголовка больше, оно будет сверху кнопки, скрывая его. Нет никакого способа контролировать этот недостаток, устанавливая ширину надписи, и это то, что вы не хотите делать, если хотите иметь адаптивный дизайн.
Итак, вот решение, которое сработало для меня, которое немного отличается от добавления текстового представления на панель инструментов. Вместо этого добавьте панель инструментов и текстовое представление в относительный макет и убедитесь, что текстовое представление находится сверху панели инструментов. Затем мы можем использовать соответствующие поля и убедиться, что текстовое представление отображается там, где мы хотим, чтобы оно отображалось.
Убедитесь, что вы установили панель инструментов, чтобы не показывать заголовок.
Вот XML для этого решения:
Решает проблему @ ankur-chaudhary, упомянутую выше.
источник
Так как
android.support.v7.appcompat 24.2
Toolbar
имеет метод,setTitleTextAppearance
и вы можете установить его шрифт без внешнегоtextview
.создать новый стиль в styles.xml
и использовать это
источник
Я провел несколько дней в поисках универсального решения. Моя панель инструментов работает с меню Android и значком навигации.
Сначала вам нужно создать собственный класс панели инструментов. Этот класс должен рассчитывать позиции по центру заголовка (отступы):
Во-вторых, вам нужно создать макет панели инструментов:
Это все
источник
Попробуйте взять панель инструментов и титл в отдельном представлении. Взгляните на правый конец и дайте им вес, равный весу панели инструментов. Таким образом, ваша грудь окажется в центре.
источник
Вы можете вставить этот код в свой XML-файл
источник
источник
Настройка
android:gravity="center"
работала для меняНет стайлинга ничего. Панель инструментов - это
ViewGroup
все, что вам нужно сделать, это установить гравитацию элементов в ней.источник
androidx.appcompat.widget.Toolbar
для пользовательского шрифта на панели инструментов вы можете переопределить шрифт textView в стиле, а затем каждый текстовый вид в вашем приложении также автоматически изменял шрифт заголовка панели инструментов, я проверил его в Android Studio 3.1.3
в стиле сделать это:
а затем в вашей теме используйте это:
источник
Я нашел другой способ добавить пользовательскую панель инструментов без какого-либо дополнительного кода Java / Kotlin.
Во-первых: создайте XML с вашим собственным макетом панели инструментов с AppBarLayout в качестве родителя:
Второе: включите панель инструментов в свой макет:
источник
На мой взгляд, у вас есть два варианта:
1) Редактировать панель инструментов XML. Когда ваша панель инструментов добавляется в XML, она обычно выглядит так:
если вы хотите настроить его, просто удалите «/» в конце и сделайте так:
Таким образом, вы можете иметь панель инструментов и настроить текстовое представление и логотип.
2) Программно изменить родной текстовый вид и значок:
убедитесь, что ваша панель инструментов не является нулевой, прежде чем устанавливать в нее что-либо.
источник
Вы можете иметь пользовательский
TextView
на панели инструментов, как это:Таким образом, это будет центрировать текст. Если вы хотите добавить собственный шрифт в обычный
Toolbar
, сделайте<style>
:И добавьте его на панель инструментов:
Для просмотра текста на панели инструментов вы можете определить его с помощью
fontFamily
атрибута:источник
Я столкнулся с той же проблемой, исправленной в MainActivity.
И во фрагменте
источник