Estoy tratando de encontrar la manera correcta de usar una fuente personalizada para el título de la barra de herramientas y centrarla en la barra de herramientas (requisito del cliente).
En este momento, estoy usando el viejo ActionBar, y estaba configurando el título en un valor vacío, y usando setCustomView
para poner mi fuente personalizada TextView y centrarla usando ActionBar.LayoutParams.
¿Hay una mejor manera de hacer eso? Usando la nueva barra de herramientas como mi ActionBar.
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
( vea esta respuesta ).El título de la barra de herramientas tiene estilo. Cualquier personalización que realice debe hacerse en el tema. Te voy a dar un ejemplo.
Diseño de barra de herramientas:
Estilos:
fuente
TextView
es un poco raro, pero la respuesta de reflexión es simplemente malvada.¡Esto es solo para ayudar a unir todas las piezas usando la respuesta de @ MrEngineer13 con los comentarios de @Jonik y @Rick Sanchez en el orden correcto para ayudar a lograr un título centrado fácilmente!
El diseño con
TextAppearance.AppCompat.Widget.ActionBar.Title
:La forma de lograr con el orden correcto:
Por favor, no olvide votar a favor @ MrEngineer13 respuesta !!!
Aquí hay un proyecto de ejemplo ToolbarCenterTitleSample
Espero ayudar a alguien más;)
fuente
Scrolling Activity
?no tenemos acceso directo al título TextView de la barra de herramientas, por lo que utilizamos la reflexión para acceder a él.
fuente
mTitleTextView
se convierteabcde12345
?Aquí está el enfoque dependiente del texto del título para encontrar la
TextView
instanciaToolbar
.fuente
Defina la siguiente clase:
... y luego solo utilízalo en lugar de regular
Toolbar
como este:Todavía necesita estas 2 líneas de código en su
Activity
(como con el estándarToolbar
):¡Eso es! No necesita ocultar el título estándar alineado a la izquierda, no necesita duplicar el mismo código XML una y otra vez, etc., solo use
CenteredToolbar
como si fuera el predeterminadoToolbar
. También puede configurar su fuente personalizada mediante programación, ya que ahora tiene acceso directo aTextView
. Espero que esto ayude.fuente
centeredTitleTextView.setTextColor(...)
debería funcionarLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
?Nadie ha mencionado esto, pero hay algunos atributos para
Toolbar
:app:titleTextColor
para configurar el color del texto del títuloapp:titleTextAppearance
para configurar la apariencia del texto del títuloapp:titleMargin
para establecer el margenY hay otros márgenes del lado específico como
marginStart
, etc.fuente
<style name="customFontTextAppearanceStyle"> <item name="android:textSize">18sp</item> <item name="android:typeface">monospace</item>
y aplíquelo en la barra de herramientasapp:titleTextAppearance="@styles/customFontTextAppearanceStyle"
app:titleTextAppearanc="style name"
en elandroid.support.v7.widget.Toolbar
TAGYo uso esta solución:
fuente
Sin la barra de herramientas TextView, podemos personalizar la fuente usando el siguiente código
fuente
fuente
Diseño:
Código:
fuente
Resolví esta solución, y este es un código siguiente:
Y puede cambiar el título / etiqueta, en Actividad, escriba los siguientes códigos:
TextView mTitle = (TextView) toolbarTop.findViewById (R.id.toolbar_title); mTitle.setText ("@ string / ....");
fuente
Puedes usar como el siguiente
fuente
Una forma muy rápida y fácil de configurar una fuente personalizada es usar una personalizada
titleTextAppearance
confontFamily
:Añadir a styles.xml :
En su carpeta res, cree una carpeta de fuentes (Ej: varela_round_regular.ttf )
Lea la guía oficial para obtener más información https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
fuente
No sé si algo cambió en la biblioteca de appcompat, pero es bastante trivial, no es necesario reflexionar.
fuente
Solución que utilicé para este problema:
Para la gravedad central, creo que sería necesario cambiar los parámetros de diseño para emparejar_parent horizontalmente y luego:
fuente
Actualización de la respuesta de @ MrEngineer13: para alinear el centro de títulos en cualquier caso, incluido el icono de hamburguesa, los menús de opciones, puede agregar una
FrameLayout
barra de herramientas como esta:fuente
En XML intente esto:
En codigo:
fuente
Aunque agregar una vista de texto a la barra de herramientas puede resolver el problema de la restricción del estilo del título, hay un problema con él. Como no lo estamos agregando a un diseño, no tenemos demasiado control sobre su ancho. Podemos usar wrap_content o match_parent.
Ahora considere un escenario donde tenemos un searchView como un botón en el borde derecho de la barra de herramientas. Si el contenido del título es mayor, irá encima del botón que lo oculta. No hay forma de controlar este corto de establecer un ancho en la etiqueta y es algo que no desea hacer si desea tener un diseño receptivo.
Entonces, aquí hay una solución que funcionó para mí, que es ligeramente diferente de agregar una vista de texto a la barra de herramientas. En lugar de eso, agregue la barra de herramientas y la vista de texto a un diseño relativo y asegúrese de que la vista de texto esté en la parte superior de la barra de herramientas. Luego, podemos usar los márgenes apropiados y asegurarnos de que la vista de texto aparezca donde queremos que aparezca.
Asegúrese de configurar la barra de herramientas para que no muestre el título.
Aquí está el XML para esta solución:
Resuelve el problema @ ankur-chaudhary mencionado anteriormente.
fuente
Dado que
android.support.v7.appcompat 24.2
Toolbar
tiene métodosetTitleTextAppearance
y puede configurar su fuente sin externatextview
.crear un nuevo estilo en styles.xml
y úsalo
fuente
Pasé varios días buscando una solución universal. Mi barra de herramientas funciona con el menú de Android y el icono de navegación.
Al principio, necesita crear una clase de barra de herramientas personalizada. Esta clase debe tener calcular las posiciones centradas en el título (rellenos):
En segundo lugar, necesita crear la barra de herramientas de diseño:
Eso es todo
fuente
Intente tomar la barra de herramientas y el título en una vista separada. Eche un vistazo al extremo derecho y déles un peso igual al peso de la barra de herramientas. De esta manera su título vendrá al centro.
fuente
Puede insertar este código en su archivo xml
fuente
fuente
El ajuste
android:gravity="center"
funcionó para míSin peinar nada. La barra de herramientas es básicamente
ViewGroup
todo lo que necesita hacer es establecer la gravedad de los elementos en ella.fuente
androidx.appcompat.widget.Toolbar
para la fuente personalizada en la barra de herramientas, puede anular la fuente textView en estilo y luego cada textView en su aplicación también cambia la fuente del título de la barra de herramientas automáticamente. Lo probé en Android Studio 3.1.3
con estilo hazlo:
y luego en tu tema usa esto:
fuente
Encontré otra forma de agregar una barra de herramientas personalizada sin ningún código adicional de Java / Kotlin.
Primero: cree un XML con su diseño de barra de herramientas personalizado con AppBarLayout como padre:
Segundo: incluya la barra de herramientas en su diseño:
fuente
Según lo veo, tienes dos opciones:
1) Edite la barra de herramientas XML. Cuando su barra de herramientas se agrega en el XML, generalmente se ve así:
si desea personalizarlo, simplemente elimine el '/' al final y hágalo así:
de esa manera puede tener una barra de herramientas y personalizar la vista de texto y el logotipo.
2) Cambie programáticamente la vista de texto y el icono nativos:
asegúrese de que su barra de herramientas no sea nula antes de configurar algo en ella.
fuente
Puede tener una costumbre
TextView
en la barra de herramientas como esta:Entonces, esto centrará el texto. Si desea agregar una fuente personalizada a una normal
Toolbar
, haga un<style>
:Y agréguelo a la barra de herramientas:
Para la vista de texto en la barra de herramientas, puede definirla con el
fontFamily
atributo:fuente
Estaba enfrentando el mismo problema, solucionado haciendo esto en MainActivity
Y en fragmento
fuente