Estoy de acuerdo en que esto no es completamente compatible, pero esto es lo que hice. Puede usar una vista personalizada para su barra de acción (se mostrará entre su icono y sus elementos de acción). Estoy usando una vista personalizada y tengo el título nativo deshabilitado. Todas mis actividades se heredan de una sola actividad, que tiene este código en onCreate:
this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);
LayoutInflater inflator = LayoutInflater.from(this);
View v = inflator.inflate(R.layout.titleview, null);
//if you need to customize anything else about the text, do it here.
//I'm using a custom TextView with a custom font in my layout xml so all I need to do is set title
((TextView)v.findViewById(R.id.title)).setText(this.getTitle());
//assign the view to the actionbar
this.getActionBar().setCustomView(v);
Y mi diseño xml (R.layout.titleview en el código anterior) se ve así:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent" >
<com.your.package.CustomTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:textSize="20dp"
android:maxLines="1"
android:ellipsize="end"
android:text="" />
</RelativeLayout>
Puede hacer esto usando una
TypefaceSpan
clase personalizada . Es superior alcustomView
enfoque indicado anteriormente porque no se rompe cuando se usan otros elementos de la Barra de acción, como expandir las vistas de acción.El uso de tal clase se vería así:
La
TypefaceSpan
clase personalizada pasa su contexto de actividad y el nombre de un tipo de letra en suassets/fonts
directorio. Carga el archivo y almacena en caché una nuevaTypeface
instancia en la memoria. La implementación completa deTypefaceSpan
es sorprendentemente simple:Simplemente copie la clase anterior en su proyecto e impleméntelo en el
onCreate
método de su actividad como se muestra arriba.fuente
textAllCaps
atributo se establece en verdadero en TextView subyacente (por ejemplo, a través de un tema), la fuente personalizada no aparecerá. Esto fue un problema para mí cuando apliqué esta técnica a los elementos de la pestaña de la barra de acción.assets/fonts/
. Si usted acaba de tirar los archivos .ttf / .otf en el activo y no en una subcarpeta, debe modificar la siguiente línea de código en consecuencia:String.format("fonts/%s", typefaceName)
. Perdí 10 minutos intentando resolverlo. Si no lo hace, obtendrájava.lang.RuntimeException: Unable to start activity ComponentInfo{com.your.pckage}: java.lang.RuntimeException: native typeface cannot be made
fuente
Desde Android Support Library v26 + Android Studio 3.0 en adelante, ¡este proceso se ha vuelto fácil como un toque!
Siga estos pasos para cambiar la fuente del título de la barra de herramientas:
res > font
según las fuentes en XMLEn
res > values > styles
, pegue lo siguiente (¡ use su imaginación aquí! )Inserte una nueva línea en las propiedades de su barra de herramientas
app:titleTextAppearance="@style/TextAppearance.TabsFont"
como se muestra a continuación¡Disfruta de un estilo de fuente de título de Actionbar personalizado!
fuente
La biblioteca de caligrafía le permite establecer una fuente personalizada a través del tema de la aplicación, que también se aplicaría a la barra de acción.
Todo lo que se necesita para activar Calligraphy es adjuntarlo a su contexto de Actividad:
El atributo personalizado predeterminado es
fontPath
, pero puede proporcionar su propio atributo personalizado para la ruta inicializándolo en su clase de Aplicación conCalligraphyConfig.Builder
. El uso deandroid:fontFamily
ha sido desalentado.fuente
Es un truco feo pero puedes hacerlo así (ya que action_bar_title está oculto):
Este código es para dispositivos posteriores a GINGERBREAD, pero también se puede extender fácilmente para que funcione con la barra de acción Sherlock
PD Basado en el comentario de @pjv, hay una mejor manera de encontrar la identificación del título de la barra de acción
fuente
El siguiente código funcionará para todas las versiones. Verifiqué esto en un dispositivo con pan de jengibre, así como en el dispositivo JellyBean
fuente
use una nueva barra de herramientas en la biblioteca de soporte, diseñe su barra de acción como propia o use el siguiente código
Inflar Textview no es una buena opción, prueba el generador de cadenas Spannable
copia debajo de la clase
fuente
fuente
typeface.ITALIC
conTypeface.ITALIC
para no tener advertencia de miembro estáticoSi desea establecer el tipo de letra para todas las vistas de texto en toda la actividad, puede usar algo como esto:
Y el TypefaceCache:
fuente
Acabo de hacer lo siguiente dentro de la función onCreate ():
Estoy usando las bibliotecas de soporte, si no las está usando, supongo que debería cambiar a getActionBar () en lugar de getSupportActionBar ().
En Android Studio 3 puede agregar fuentes personalizadas siguiendo estas instrucciones https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html y luego usar su fuente recién agregada en " font_to_be_used "
fuente
Para agregar a la respuesta de @ Sam_D, tuve que hacer esto para que funcione:
Parece excesivo, haciendo referencia a v.findViewById (R.id.title)) dos veces, pero esa es la única forma en que me dejaría hacerlo.
fuente
Para actualizar la respuesta correcta.
en primer lugar: establezca el título en falso, porque estamos usando una vista personalizada
segundo: crear titleview.xml
Por último :
DESCARGAR ARCHIVO DE FUENTES: porque estoy almacenando el archivo en cloudinary, así que tengo un enlace para descargarlo.
fuente
¡No se requiere una vista de texto personalizada!
Primero, deshabilite el título en la barra demasiado en su código java: getSupportActionBar (). SetDisplayShowTitleEnabled (false);
Luego, simplemente agregue un TextView dentro de la barra de herramientas:
fuente
Intenta usar esto
fuente
Necesitamos usar reflexiones para lograr esto
fuente
PRUEBA ESTO
fuente