probado setCollapsedTitleTextAppearance (); y setCollapsedTitleTextColor (); función?
Abhishek
@abhishek, no es lo que estoy buscando. No puedo cambiar el tipo de letra a través de xml.
AlexMomotov
Respuestas:
139
Actualizar
Antes de sumergirnos en el código, primero decidamos el textSizepara nuestro CollapsingToolbarLayout. Google publicó un sitio web llamado material.io, este sitio web también explica la mejor manera de lidiar con la tipografía .
El artículo menciona la categoría "Encabezado", que también explica el tamaño de fuente recomendado para usar sp.
Aunque el artículo nunca mencionó el tamaño CollapsingToolbarLayout'sexpandido recomendado, la biblioteca com.android.support:designproporciona una TextAppearancepara nuestro caso. Con un poco de investigación con la fuente, resulta que el tamaño es 34sp(no mencionado en el artículo).
Entonces, ¿qué tal el tamaño colapsado? Por suerte el artículo mencionó algo y lo es 20sp.
Y lo mejor TextAppearancehasta ahora que encaja en el modo collpased es TextAppearance.AppCompat.Titlemientras que nuestro modo expandidoTextAppearance es TextAppearance.Design.CollapsingToolbar.Expanded.
Si observa todos nuestros ejemplos anteriores, todos ellos usan la versión REGULAR de la fuente, lo cual es seguro decir que Roboto regularhará 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 Roboto necesarias? Así que presento una biblioteca de caligrafía para Roboto, por ejemplo, Typer .
Esto hizo el trabajo para mí de cambiar el color del texto del título, ya que me parece que Toolbar.setTitleTextColor()o app:titleTextColorde Toolbarcambio duerma el color del título de la barra de herramientas cuando encerrado enCollapsingToolbarLayout
Para agregar a todas las respuestas aquí, no funcionó para mí en xml sin importar dónde intenté aplicar, en AppTheme, referencias en estilos. Actualmente estoy usando la biblioteca de soporte 27.1.1
Asegúrese de establecer primero el título de la barra de herramientas Colapsar . Establecer setCollapsedTitleTypeFace después de configurar el título funcionó para mí.
Pradip Tilala
sí, funcionó para mí y debería funcionar para quien usa la carpeta 'fuente'.
VipiN Negi
10
Parece que tengo una 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) {
}
}
¿Hay alguna forma de establecer un margen para contraer el título?
Mr.G
4
Cambie el tamaño de fuente o el padre.
<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>
Respuestas:
Actualizar
Antes de sumergirnos en el código, primero decidamos el
textSize
para nuestroCollapsingToolbarLayout
. Google publicó un sitio web llamadomaterial.io
, este sitio web también explica la mejor manera de lidiar con la tipografía .El artículo menciona la categoría "Encabezado", que también explica el tamaño de fuente recomendado para usar
sp
.Aunque el artículo nunca mencionó el tamaño
CollapsingToolbarLayout's
expandido recomendado, la bibliotecacom.android.support:design
proporciona unaTextAppearance
para nuestro caso. Con un poco de investigación con la fuente, resulta que el tamaño es34sp
(no mencionado en el artículo).Entonces, ¿qué tal el tamaño colapsado? Por suerte el artículo mencionó algo y lo es
20sp
.Y lo mejor
TextAppearance
hasta ahora que encaja en el modo collpased esTextAppearance.AppCompat.Title
mientras que nuestro modo expandidoTextAppearance
esTextAppearance.Design.CollapsingToolbar.Expanded
.Si observa todos nuestros ejemplos anteriores, todos ellos usan la versión REGULAR de la fuente, lo cual 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 Roboto necesarias? 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.
fuente
Puede usar los nuevos métodos públicos, en
CollapsingToolbarLayout
para establecer el tipo de letra para el título contraído y expandido, así:final Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/FrutigerLTStd-Light.otf"); collapsingToolbar.setCollapsedTitleTypeface(tf); collapsingToolbar.setExpandedTitleTypeface(tf);
Esto parece haber sido agregado en la biblioteca de soporte de diseño 23.1.0, y es una adición muy bienvenida.
fuente
setTitle(String)
método en laCollapsingToolbarLayout
instancia.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:
<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>
también vea aquí como referencia.
fuente
Toolbar.setTitleTextColor()
oapp:titleTextColor
deToolbar
cambio duerma el color del título de la barra de herramientas cuando encerrado enCollapsingToolbarLayout
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>
Referencia aquí CollapsingToolbarLayout setTitle no funciona correctamente
fuente
Para agregar a todas las respuestas aquí, no funcionó para mí en xml sin importar dónde intenté aplicar, en AppTheme, referencias en 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);
fuente
Parece que tengo una 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) { } }
fuente
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 proporciona a continuación, en style.xml
<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title"> <item name="android:textSize">16sp</item> </style>
fuente
Cambie el tamaño de fuente o el 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>
fuente
Android 8.0 (API nivel 26) ha introducido una nueva función, Fuentes en XML
Ahora puede definir fuentes como recurso https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
res-> font->
carpetasiguiente conjunto
val typeface = ResourcesCompat.getFont(this, R.font.lobster_regular) htab_collapse_toolbar.setCollapsedTitleTypeface(typeface) htab_collapse_toolbar.setExpandedTitleTypeface(typeface)
fuente