Estou tentando descobrir a maneira correta de usar uma fonte personalizada para o título da barra de ferramentas e centralizá-la na barra de ferramentas (requisito do cliente).
No momento, estou usando o bom e antigo ActionBar, e estava definindo o título como valor vazio e usando setCustomView
para colocar minha fonte personalizada TextView e centralizá-lo usando ActionBar.LayoutParams.
Existe uma maneira melhor de fazer isso? Usando a nova barra de ferramentas como minha ActionBar.
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
( consulte esta resposta ).O título da barra de ferramentas é estiloso. Qualquer personalização que você fizer deve ser feita no tema. Eu vou te dar um exemplo.
Layout da barra de ferramentas:
Estilos:
fonte
TextView
é um pouco hacky, mas a resposta da reflexão é pura maldade.Isso é apenas para ajudar a juntar todas as peças usando a resposta @ MrEngineer13 com @Jonik e @Rick Sanchez comentam com a ordem certa para ajudar a alcançar o título com facilidade!
O layout com
TextAppearance.AppCompat.Widget.ActionBar.Title
:A maneira de alcançar com a ordem certa:
Por favor, não esqueça de votar no @ MrEngineer13 answer !!!
Aqui está um exemplo de projeto ToolbarCenterTitleSample
Espero ajudar alguém;)
fonte
Scrolling Activity
?não temos acesso direto ao título TextView da barra de ferramentas, portanto usamos reflexão para acessá-lo.
fonte
mTitleTextView
se tornarabcde12345
?Aqui está uma abordagem dependente do texto do título para encontrar a
TextView
instânciaToolbar
.fonte
Defina a seguinte classe:
... e apenas use-o em vez de regular
Toolbar
como este:Você ainda precisa dessas 2 linhas de código no seu
Activity
(como no padrãoToolbar
):É isso aí! Você não precisa ocultar o título alinhado à esquerda padrão, não precisa duplicar o mesmo código XML repetidamente, etc., use apenas
CenteredToolbar
como se fosse o padrãoToolbar
. Você também pode definir sua fonte personalizada programaticamente, pois agora você tem acesso direto aoTextView
. Espero que isto ajude.fonte
centeredTitleTextView.setTextColor(...)
deve trabalharLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
?Ninguém mencionou isso, mas existem alguns atributos para
Toolbar
:app:titleTextColor
para definir a cor do texto do títuloapp:titleTextAppearance
para definir a aparência do texto do títuloapp:titleMargin
para definir a margemE há outras margens específicas, como
marginStart
etc.fonte
<style name="customFontTextAppearanceStyle"> <item name="android:textSize">18sp</item> <item name="android:typeface">monospace</item>
e aplicá-lo na barra de ferramentasapp:titleTextAppearance="@styles/customFontTextAppearanceStyle"
app:titleTextAppearanc="style name"
noandroid.support.v7.widget.Toolbar
TAGEu uso esta solução:
fonte
Sem a barra de ferramentas TextView, podemos personalizar a fonte usando o código abaixo
fonte
fonte
Layout:
Código:
fonte
Eu resolvi esta solução, e este é um dos seguintes códigos:
E você pode alterar o título / etiqueta. Em Atividade, escreva os códigos abaixo:
TextView mTitle = (TextView) toolbarTop.findViewById (R.id.toolbar_title); mTitle.setText ("@ string / ....");
fonte
Você pode usar como o seguinte
fonte
Uma maneira muito rápida e fácil de definir uma fonte personalizada é usar uma personalizada
titleTextAppearance
comfontFamily
:Adicione ao styles.xml :
Na sua pasta res, crie uma pasta de fontes (Ex: varela_round_regular.ttf )
Leia o guia oficial para saber mais https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
fonte
Não sei se alguma coisa mudou na biblioteca appcompat, mas é bastante trivial, sem necessidade de reflexão.
fonte
Solução que eu usei para esse problema:
Para a gravidade central, acho que seria necessário alterar os parâmetros de layout para match_parent horizontalmente e depois:
fonte
Atualização da resposta de @ MrEngineer13: para alinhar o centro do título em qualquer caso, incluindo o ícone Hamburger, menus de opções, você pode adicionar uma
FrameLayout
barra de ferramentas na seguinte:fonte
Em XML, tente o seguinte:
Em código:
fonte
Embora a adição de uma exibição de texto à barra de ferramentas possa resolver o problema da restrição de estilo de título, há um problema. Como não o estamos adicionando a um layout, não temos muito controle sobre sua largura. Podemos usar wrap_content ou match_parent.
Agora considere um cenário em que temos um searchView como um botão na borda direita da barra de ferramentas. Se o conteúdo do título for maior, ele aparecerá no topo do botão que o obscurece. Não há como controlar essa falta de definir uma largura para o rótulo e isso é algo que você não deseja fazer se quiser ter um design responsivo.
Então, aqui está uma solução que funcionou para mim que é um pouco diferente de adicionar uma visualização de texto à barra de ferramentas. Em vez disso, adicione a barra de ferramentas e a exibição de texto a um layout relativo e verifique se a exibição de texto está na parte superior da barra de ferramentas. Em seguida, podemos usar as margens apropriadas e garantir que a exibição do texto seja exibida onde queremos que seja exibida.
Certifique-se de definir a barra de ferramentas para não mostrar o título.
Aqui está o XML para esta solução:
Resolve o problema @ ankur-chaudhary mencionado acima.
fonte
Desde
android.support.v7.appcompat 24.2
Toolbar
has methodsetTitleTextAppearance
e você pode definir sua fonte sem fonte externa.textview
.crie um novo estilo em styles.xml
e use
fonte
Passei vários dias procurando uma solução universal. Minha barra de ferramentas trabalhando com o menu do Android e o ícone de navegação.
Inicialmente, você precisa criar uma classe de barra de ferramentas personalizada. Esta classe deve ter calculado as posições centradas no título (preenchimentos):
Em segundo lugar, você precisa criar a barra de ferramentas de layout:
Isso é tudo
fonte
Tente usar a Barra de Ferramentas e inclinar em uma exibição separada. Dê uma olhada na extremidade direita e dê a eles peso igual ao peso da barra de ferramentas. Desta forma, o seu til vai entrar no centro.
fonte
Você pode inserir esse código no seu arquivo xml
fonte
fonte
Configuração
android:gravity="center"
funcionou para mimNada de estilo. A barra de ferramentas é basicamente
ViewGroup
tudo que você precisa fazer é definir a gravidade dos elementos nela.fonte
androidx.appcompat.widget.Toolbar
para fonte personalizada na barra de ferramentas, você pode substituir a fonte textView em grande estilo e, em seguida, todas as textView no aplicativo e a fonte do título da barra de ferramentas foram alteradas automaticamente. estúdio android 3.1.3
em grande estilo fazê-lo:
e, em seu tema, use o seguinte:
fonte
Encontrei outra maneira de adicionar barra de ferramentas personalizada sem nenhum código Java / Kotlin adicional.
Primeiro: crie um XML com seu layout de barra de ferramentas personalizado com AppBarLayout como pai:
Segundo: inclua a barra de ferramentas no seu layout:
fonte
A meu ver, você tem duas opções:
1) Edite o XML da barra de ferramentas. Quando sua barra de ferramentas é adicionada ao XML, geralmente se parece com isso:
se você quiser personalizá-lo, remova o '/' no final e faça assim:
Dessa forma, você pode ter uma barra de ferramentas e personalizar a visualização de texto e o logotipo.
2) Altere programaticamente a visualização de texto e o ícone nativos:
verifique se a barra de ferramentas não é nula antes de definir algo nela.
fonte
Você pode personalizar
TextView
na barra de ferramentas assim:Então, isso centralizará o texto. Se você deseja adicionar uma fonte personalizada ao normal
Toolbar
, faça um<style>
:E adicione-o à barra de ferramentas:
Para a visualização de texto na barra de ferramentas, você pode defini-la com o
fontFamily
atributo:fonte
Eu estava enfrentando o mesmo problema, corrigido ao fazer isso em MainActivity
E Em Fragmento
fonte