studio icon font color change android fonts toolbar font-size android-collapsingtoolbarlayout

android - icon - ¿Cómo cambiar el tipo de letra y el tamaño de CollapsingToolbarLayout?



change toolbar color android programmatically (9)

Actualizar

Antes de sumergirnos en el código, primero decidamos el textSize para nuestro CollapsingToolbarLayout . Google publicó un sitio web llamado material.io , este sitio web también explica la mejor manera de lidiar con la Typography .

El artículo menciona la categoría "Encabezado" que también explica el tamaño de fuente recomendado para usar en sp .

Aunque el artículo nunca mencionó el tamaño expandido recomendado de CollapsingToolbarLayout''s pero la biblioteca com.android.support:design proporciona una TextAppearance de TextAppearance para nuestro caso. Al investigar un poco con la fuente, resulta que el tamaño es de 34sp (no mencionado en el artículo).

Entonces, ¿qué tal el tamaño colapsado? Afortunadamente, el artículo menciona algo y es 20sp .

Y el mejor TextAppearance hasta ahora que se ajusta en modo TextAppearance.AppCompat.Title es TextAppearance.AppCompat.Title mientras que nuestro modo expandido TextAppearance es TextAppearance.Design.CollapsingToolbar.Expanded .

Si observa todos nuestros ejemplos, todos utilizan la versión REGULAR de la fuente, lo que es seguro decir que Roboto regular hará la tarea a menos que tenga requisitos específicos.

Puede ser demasiado trabajo descargar las fuentes en sí, ¿por qué no usar una biblioteca que tenga todas las fuentes necesarias de Roboto? Así que presento una biblioteca de caligrafía para Roboto, por ejemplo, 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

// Java example CollapsingToolbarLayout collapsingToolbar = findViewById(R.id.collapsing_toolbar); collapsingToolbar.setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR()); collapsingToolbar.setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR());

Kotlin

// Kotlin example collapsing_toolbar.apply { setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR) setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR) }

¡Esta es una actualización de 2019 porque la biblioteca Typer está actualizada! También soy el autor de la biblioteca.

Quiero cambiar el tamaño de fuente CollapsingToolbarLayout y su tipo de letra. ¿Cómo puedo lograr eso?


Android 8.0 (API nivel 26) ha introducido una nueva característica, Fuentes en XML

Ahora puede definir fuentes como recursos https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html

  • Ponga sus fuentes en res-> font-> folder
  • Definir font.xml

<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/lobster_regular" /> <font android:fontStyle="italic" android:fontWeight="400" android:font="@font/lobster_italic" /> </font-family>

siguiente set

val typeface = ResourcesCompat.getFont(this, R.font.lobster_regular) htab_collapse_toolbar.setCollapsedTitleTypeface(typeface) htab_collapse_toolbar.setExpandedTitleTypeface(typeface)


Cambiar el tamaño de fuente o padre.

<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>


El código está aquí

<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">

Agregue estas líneas de código en el diseño CollapsingToolbarLayout

app:expandedTitleTextAppearance="@style/Toolbar.TitleText" app:collapsedTitleTextAppearance="@style/Toolbar.TitleText"

Y el código que se da a continuación, en style.xml

<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title"> <item name="android:textSize">16sp</item> </style>


Para agregar a todas las respuestas aquí, no funcionó para mí en xml sin importar dónde traté de aplicar, en AppTheme, hacer referencia a estilos. Actualmente estoy usando la biblioteca de soporte 27.1.1

Funcionó solo programáticamente.

Typeface typeface = ResourcesCompat.getFont(this, R.font.my_custom_font); collapsingToolbarLayout.setCollapsedTitleTypeface(typeface); collapsingToolbarLayout.setExpandedTitleTypeface(typeface);


Parece que tengo solución:

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) { } }


Puede usar los nuevos métodos públicos, en CollapsingToolbarLayout para establecer el tipo de letra para el título contraído y expandido, de esta manera:

final Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/FrutigerLTStd-Light.otf"); collapsingToolbar.setCollapsedTitleTypeface(tf); collapsingToolbar.setExpandedTitleTypeface(tf);

Esto parece haberse agregado en la biblioteca de soporte de diseño 23.1.0, y es una adición muy bienvenida.


Puedes hacer algo como esto:

mCollapsingToolbarLayout.setTitle(getTitle()); mCollapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppBar); mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar);

El estilo de vista de texto correspondiente podría ser: 28sp # 000 negrita

<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>

También vea here para referencia.


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>

Consulte aquí CollapsingToolbarLayout setTitle no funciona correctamente