попробовал setCollapsedTitleTextAppearance (); и setCollapsedTitleTextColor (); функция?
Abhishek
@abhishek, это не то, что я ищу. Я не могу изменить шрифт через xml.
AlexMomotov
Ответы:
139
Обновить
Прежде чем мы погрузимся в код, давайте сначала определимся с textSizeнашим CollapsingToolbarLayout. Google опубликовал веб-сайт под названием material.io, на этом веб-сайте также объясняется, как лучше всего работать с типографикой .
В статье упоминается категория «Заголовок», в которой также объясняется рекомендуемый размер шрифта для использования в sp.
Хотя в статье никогда не упоминался рекомендуемый CollapsingToolbarLayout'sрасширенный размер, но библиотека com.android.support:designпредоставляет TextAppearanceдля нашего случая. Покопавшись с первоисточником выясняется, что размер есть 34sp(в статье не упоминается).
Так как насчет свернутого размера? К счастью, в статье что-то упоминалось, и это так 20sp.
И самое лучшее , TextAppearanceтак далеко , что умещается в collpased режиме в TextAppearance.AppCompat.Titleто время как наш расширен режим TextAppearanceявляется TextAppearance.Design.CollapsingToolbar.Expanded.
Если вы посмотрите на все наши примеры, выше все они используют ОБЫЧНУЮ версию шрифта, которая с уверенностью скажет, что Roboto regularвыполнит задачу, если у вас нет особых требований.
Загрузка самих шрифтов может оказаться слишком сложной. Почему бы не использовать библиотеку, в которой есть все необходимые шрифты Roboto? Итак, я представляю библиотеку каллиграфии для Roboto, например Typer .
Это сделало работу для меня изменить цвет текста в заголовке, так как я считаю , что Toolbar.setTitleTextColor()и app:titleTextColorв Toolbarизменении оленьей кожи цвета названия панели , когда заключено вCollapsingToolbarLayout
patrickjason91
1
@ patrickjason91 ты должен использоватьCollapsingToolbarLayout toolbar_layout =findViewById(R.id.toolbar_layout); toolbar_layout.setExpandedTitleColor(Color.BLACK);
Чтобы добавить ко всем ответам здесь, это не сработало для меня в xml, где бы я ни пытался применить, в AppTheme, ссылаясь на стили. В настоящее время я использую библиотеку поддержки 27.1.1
Обязательно сначала установите заголовок панели инструментов «Сворачивание» . Установить setCollapsedTitleTypeFace после установки заголовка у меня сработало.
прадип тилала
да, это сработало для меня и должно работать для тех, кто использует папку «шрифт».
VipiN Negi
10
Похоже, у меня есть решение:
private void makeCollapsingToolbarLayoutLooksGood(CollapsingToolbarLayout collapsingToolbarLayout) {
try {
final Field field = collapsingToolbarLayout.getClass().getDeclaredField("mCollapsingTextHelper");
field.setAccessible(true);
final Object object = field.get(collapsingToolbarLayout);
final Field tpf = object.getClass().getDeclaredField("mTextPaint");
tpf.setAccessible(true);
((TextPaint) tpf.get(object)).setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Bold.ttf"));
((TextPaint) tpf.get(object)).setColor(getResources().getColor(R.color.ice));
} catch (Exception ignored) {
}
}
есть ли способ установить поле для свертывания заголовка?
Mr.G
4
Измените размер шрифта или родительский.
<stylename="expandedappbar"parent="@android:style/TextAppearance.Medium"> //Change Medium to Small
<itemname="android:textSize">28sp</item><!--Or Change the font size --><itemname="android:textColor">@color/white</item><itemname="android:textStyle">bold</item></style><stylename="collapsedappbar"parent="@android:style/TextAppearance.Medium"><itemname="android:textSize">18sp</item><itemname="android:textColor">@color/white</item></style>
Ответы:
Обновить
Прежде чем мы погрузимся в код, давайте сначала определимся с
textSize
нашимCollapsingToolbarLayout
. Google опубликовал веб-сайт под названиемmaterial.io
, на этом веб-сайте также объясняется, как лучше всего работать с типографикой .В статье упоминается категория «Заголовок», в которой также объясняется рекомендуемый размер шрифта для использования в
sp
.Хотя в статье никогда не упоминался рекомендуемый
CollapsingToolbarLayout's
расширенный размер, но библиотекаcom.android.support:design
предоставляетTextAppearance
для нашего случая. Покопавшись с первоисточником выясняется, что размер есть34sp
(в статье не упоминается).Так как насчет свернутого размера? К счастью, в статье что-то упоминалось, и это так
20sp
.И самое лучшее ,
TextAppearance
так далеко , что умещается в collpased режиме вTextAppearance.AppCompat.Title
то время как наш расширен режимTextAppearance
являетсяTextAppearance.Design.CollapsingToolbar.Expanded
.Если вы посмотрите на все наши примеры, выше все они используют ОБЫЧНУЮ версию шрифта, которая с уверенностью скажет, что
Roboto regular
выполнит задачу, если у вас нет особых требований.Загрузка самих шрифтов может оказаться слишком сложной. Почему бы не использовать библиотеку, в которой есть все необходимые шрифты Roboto? Итак, я представляю библиотеку каллиграфии для Roboto, например Typer .
dependencies { implementation 'com.android.support:design:28.0.0' implementation 'com.rhexgomez.typer:typer-roboto:2.0.0' }
<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:expandedTitleTextAppearance="@style/TextAppearance.Design.CollapsingToolbar.Expanded" app:collapsedTitleTextAppearance="@style/TextAppearance.AppCompat.Title" app:layout_scrollFlags="scroll|exitUntilCollapsed">
Ява
// Java example CollapsingToolbarLayout collapsingToolbar = findViewById(R.id.collapsing_toolbar); collapsingToolbar.setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR()); collapsingToolbar.setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR());
Котлин
// Kotlin example collapsing_toolbar.apply { setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR) setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR) }
Это обновление 2019 года, потому что библиотека Typer обновлена! Я также являюсь автором библиотеки.
источник
Вы можете использовать новые общедоступные методы,
CollapsingToolbarLayout
чтобы установить шрифт для свернутого и развернутого заголовка, например:final Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/FrutigerLTStd-Light.otf"); collapsingToolbar.setCollapsedTitleTypeface(tf); collapsingToolbar.setExpandedTitleTypeface(tf);
Кажется, это было добавлено в библиотеку поддержки дизайна 23.1.0, и это очень долгожданное дополнение.
источник
setTitle(String)
метод вCollapsingToolbarLayout
экземпляре.Вы можете сделать что-то вроде этого:
mCollapsingToolbarLayout.setTitle(getTitle()); mCollapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppBar); mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar);
Соответствующий стиль текстового просмотра может быть:
<style name="ExpandedAppBar" parent="@android:style/TextAppearance.Medium"> <item name="android:textSize">28sp</item> <item name="android:textColor">#000</item> <item name="android:textStyle">bold</item> </style> <style name="CollapsedAppBar" parent="@android:style/TextAppearance.Medium"> <item name="android:textSize">24sp</item> <item name="android:textColor">@color/white</item> <item name="android:textStyle">normal</item> </style>
также см. здесь для справки.
источник
Toolbar.setTitleTextColor()
иapp:titleTextColor
вToolbar
изменении оленьей кожи цвета названия панели , когда заключено вCollapsingToolbarLayout
CollapsingToolbarLayout toolbar_layout =findViewById(R.id.toolbar_layout); toolbar_layout.setExpandedTitleColor(Color.BLACK);
mCollapsingToolbar.setTitle(getTitle()); mCollapsingToolbar.setExpandedTitleTextAppearance(R.style.ExpandedAppBar); mCollapsingToolbar.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar); <style name="ExpandedAppBar" parent="@android:style/TextAppearance.Medium"> <item name="android:textSize">28sp</item> <item name="android:textColor">#000</item> <item name="android:textStyle">bold</item> </style> <style name="CollapsedAppBar" parent="@android:style/TextAppearance.Medium"> <item name="android:textSize">24sp</item> <item name="android:textColor">@color/white</item> <item name="android:textStyle">normal</item> </style> <style name="ExpandedAppBarPlus1" parent="@android:style/TextAppearance.Medium"> <item name="android:textSize">28.5sp</item> <item name="android:textColor">#000</item> <item name="android:textStyle">bold</item> </style> <style name="CollapsedAppBarPlus1" parent="@android:style/TextAppearance.Medium"> <item name="android:textSize">24.5sp</item> <item name="android:textColor">@color/white</item> <item name="android:textStyle">normal</item> </style>
Ссылка здесь CollapsingToolbarLayout setTitle работает некорректно
источник
Чтобы добавить ко всем ответам здесь, это не сработало для меня в xml, где бы я ни пытался применить, в AppTheme, ссылаясь на стили. В настоящее время я использую библиотеку поддержки 27.1.1
Работало только программно.
Typeface typeface = ResourcesCompat.getFont(this, R.font.my_custom_font); collapsingToolbarLayout.setCollapsedTitleTypeface(typeface); collapsingToolbarLayout.setExpandedTitleTypeface(typeface);
источник
Похоже, у меня есть решение:
private void makeCollapsingToolbarLayoutLooksGood(CollapsingToolbarLayout collapsingToolbarLayout) { try { final Field field = collapsingToolbarLayout.getClass().getDeclaredField("mCollapsingTextHelper"); field.setAccessible(true); final Object object = field.get(collapsingToolbarLayout); final Field tpf = object.getClass().getDeclaredField("mTextPaint"); tpf.setAccessible(true); ((TextPaint) tpf.get(object)).setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Bold.ttf")); ((TextPaint) tpf.get(object)).setColor(getResources().getColor(R.color.ice)); } catch (Exception ignored) { } }
источник
Код здесь
<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingToolbarLayout" android:layout_width="match_parent" app:expandedTitleTextAppearance="@style/Toolbar.TitleText" app:collapsedTitleTextAppearance="@style/Toolbar.TitleText" android:layout_height="match_parent" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start" app:layout_scrollFlags="scroll|exitUntilCollapsed">
Добавьте эти строки кода в макет CollapsingToolbarLayout
app:expandedTitleTextAppearance="@style/Toolbar.TitleText" app:collapsedTitleTextAppearance="@style/Toolbar.TitleText"
И приведенный ниже код в style.xml
<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title"> <item name="android:textSize">16sp</item> </style>
источник
Измените размер шрифта или родительский.
<style name="expandedappbar" parent="@android:style/TextAppearance.Medium"> //Change Medium to Small <item name="android:textSize">28sp</item> <!--Or Change the font size --> <item name="android:textColor">@color/white</item> <item name="android:textStyle">bold</item> </style> <style name="collapsedappbar" parent="@android:style/TextAppearance.Medium"> <item name="android:textSize">18sp</item> <item name="android:textColor">@color/white</item> </style>
источник
В Android 8.0 (уровень API 26) появилась новая функция - шрифты в XML.
Теперь вы можете определять шрифты как ресурс https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html.
res-> font->
папкуследующий набор
val typeface = ResourcesCompat.getFont(this, R.font.lobster_regular) htab_collapse_toolbar.setCollapsedTitleTypeface(typeface) htab_collapse_toolbar.setExpandedTitleTypeface(typeface)
источник