Concordo que isso não é totalmente suportado, mas aqui está o que eu fiz. Você pode usar uma exibição personalizada para sua barra de ação (ela será exibida entre o ícone e os itens de ação). Estou usando uma exibição personalizada e tenho o título nativo desativado. Todas as minhas atividades são herdadas de uma única atividade, que possui esse código no 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);
E meu layout xml (R.layout.titleview no código acima) se parece com o seguinte:
<?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>
Você pode fazer isso usando uma
TypefaceSpan
classe personalizada . É superior àcustomView
abordagem indicada acima, porque não quebra ao usar outros elementos da Barra de Ação, como expandir as visualizações de ação.O uso dessa classe seria algo como isto:
A
TypefaceSpan
classe personalizada recebe o contexto de Atividade e o nome de um tipo de letra em seuassets/fonts
diretório. Carrega o arquivo e armazena em cache uma novaTypeface
instância na memória. A implementação completa deTypefaceSpan
é surpreendentemente simples:Simplesmente copie a classe acima em seu projeto e implemente-a no
onCreate
método da sua atividade, como mostrado acima.fonte
textAllCaps
atributo estiver definido como true no TextView subjacente (por exemplo, através de um tema), a fonte personalizada não aparecerá. Esse foi um problema para mim quando apliquei essa técnica aos itens da guia da barra de ação.assets/fonts/
. Se você acabou de jogar os arquivos .ttf / .otf no ativo e não em uma subpasta, você deve modificar a seguinte linha de código em conformidade:String.format("fonts/%s", typefaceName)
. Perdi bons 10 minutos tentando descobrir. Se não, você receberájava.lang.RuntimeException: Unable to start activity ComponentInfo{com.your.pckage}: java.lang.RuntimeException: native typeface cannot be made
fonte
Da biblioteca de suporte do Android v26 + Android Studio 3.0 , este processo tornou-se fácil como um movimento !!
Siga estas etapas para alterar a fonte do título da barra de ferramentas:
res > font
conforme Fontes em XMLEm
res > values > styles
, cole o seguinte ( use sua imaginação aqui! )Insira uma nova linha nas propriedades da barra de ferramentas,
app:titleTextAppearance="@style/TextAppearance.TabsFont"
como mostrado abaixoAproveite o estilo de fonte Custom Actionbar Title !!
fonte
A biblioteca de caligrafia permite definir uma fonte personalizada por meio do tema do aplicativo, que também se aplicaria à barra de ação.
Tudo o que é necessário para ativar o Caligrafia é anexá-lo ao seu contexto de Atividade:
O atributo personalizado padrão é
fontPath
, mas você pode fornecer seu próprio atributo personalizado para o caminho, inicializando-o na sua classe ApplicationCalligraphyConfig.Builder
. O uso deandroid:fontFamily
foi desencorajado.fonte
É um truque feio, mas você pode fazer assim (já que action_bar_title está oculto):
Esse código é para dispositivos pós-GINGERBREAD, mas também pode ser facilmente estendido para trabalhar com a barra de ação Sherlock
PS Com base no comentário @pjv, há uma maneira melhor de encontrar o ID do título da barra de ação
fonte
O código a seguir funcionará para todas as versões. Eu verifiquei isso em um dispositivo com pão de gengibre, bem como no dispositivo JellyBean
fonte
use a nova barra de ferramentas na biblioteca de suporte, crie sua barra de ação como sua ou use o código abaixo
Inflar o Textview não é uma boa opção, tente o construtor Spannable String
copie abaixo da aula
fonte
fonte
typeface.ITALIC
porTypeface.ITALIC
para não ter nenhum aviso de membro estáticoSe você deseja definir o tipo de letra para todos os TextViews em toda a atividade, pode usar algo como isto:
E o TypefaceCache:
fonte
Eu apenas fiz o seguinte dentro da função onCreate ():
Estou usando as bibliotecas de suporte, se você não as estiver usando, acho que você deve mudar para getActionBar () em vez de getSupportActionBar ().
No Android Studio 3, você pode adicionar fontes personalizadas seguindo estas instruções https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html e, em seguida, use sua fonte recém-adicionada em " font_to_be_used "
fonte
Para adicionar à resposta de @ Sam_D, eu tive que fazer isso para que funcionasse:
Parece exagero - referenciando v.findViewById (R.id.title)) duas vezes - mas essa é a única maneira de me permitir fazê-lo.
fonte
Para atualizar a resposta correta.
primeiro: defina o título como false, porque estamos usando a visualização personalizada
segundo: crie titleview.xml
Por último:
DOWNLOAD FONT FILE: porque estou armazenando o arquivo no cloudinary, por isso tenho um link para fazer o download.
fonte
Nenhuma visualização de texto personalizada é necessária!
Primeiro, desative o título no toobar no seu código java: getSupportActionBar (). SetDisplayShowTitleEnabled (false);
Em seguida, basta adicionar um TextView dentro da barra de ferramentas:
fonte
Tente usar este
fonte
Precisamos usar reflexões para alcançar esse objetivo.
fonte
TENTE ISSO
fonte