BottomNavigationView não mostra o título do menu que está inativo.
Como mostrar títulos de todos os elementos do menu em bottomNavigationBar? O problema é que, no meu caso, apenas o título do elemento é clicado.
android
android-support-design
bottomnavigationview
Natan Rubinstein
fonte
fonte
Respostas:
A implementação de
BottomNavigationView
tem condição: quando houver mais de 3 itens, use o modo shift.Neste momento, você não pode alterá-lo através da API existente e a única maneira de desativar o modo de mudança é usar a reflexão.
Você precisará da classe auxiliar:
E, em seguida, aplique o
disableShiftMode
método no seuBottomNavigationView
, mas lembre-se, se você estiver inflando a exibição do menu a partir do seu código, será necessário executá-lo após o inflamento.Exemplo de uso:
PS.
Lembre-se, você precisará executar esse método sempre que alterar os itens de menu no seu
BottomNavigationView
.ATUALIZAR
Você também precisa atualizar o arquivo de configuração do programa (por exemplo, proguard-rules.pro), o código acima usa reflexão e não funcionará se o programa ofuscar o
mShiftingMode
campo.Obrigado Muhammad Alfaifi por apontar esse problema e fornecer snippet .
ATUALIZAÇÃO 2
Como Jolanda Verhoef apontou, a nova biblioteca de Suporte (
28.0.0-alpha1
) e também a nova biblioteca de Componentes de Materiais (1.0.0-beta01
) oferecem uma propriedade pública que pode ser usada para manipular o modo de deslocamento em três itens de menu.Na biblioteca de componentes de material também se aplica se houver 5 itens de menu.
ATUALIZAÇÃO 3
Como o @ThomasSunderland também apontou, você pode definir essa propriedade como false
app:itemHorizontalTranslation="false"
semEnabled
postfix para desativar a animação deslocada.você pode conferir o guia completo sobre como estilizar o BottomNavigation aqui
fonte
Desde a biblioteca de suporte 28.0.0-alpha1:
fonte
app:
nãoandroid:
Para desativar a animação de texto, você também pode usá-lo no seu arquivo dimens.xml:
Você também pode precisar adicionar isso no seu manifesto:
fonte
tools:override="true"
<dimen name="design_bottom_navigation_active_text_size" tools:ignore="PrivateResource">12sp</dimen>
Agora você pode usar
app:labelVisibilityMode="[labeled, unlabeled, selected, auto]"
em28-alpha
labeled
manterá todos os marcadores visíveis.unlabeled
mostrará apenas ícones.selected
mostrará apenas o rótulo para o item selecionado e os itens de turno.auto
escolherá rotulado ou selecionado com base no número de itens que você possui. rotulado para 1 a 3 itens e selecionado para mais de 3 itens.fonte
Resposta de Przemysław em Kotlin como uma função de extensão
Uso (com extensões Kotlin para Android):
fonte
Funciona para mim
ou
fonte
Para desativar a animação de texto e diminuir o tamanho da fonte, use isso no arquivo dimens.xml:
fonte
Navigate
->File...
>design_bottom_navigation_item.xml
para ver que não há nenhuma outra maneira.ATUALIZAR
no Android sdk versão 28 e superior, eles foram alterados
item.setShiftingMode(false)
paraitem.setShifting(false)
Eles também removeram o campo
mShiftingMode
Então o uso será
fonte
Como outros já apontaram, desde a biblioteca de suporte 28.0.0-alpha1 é possível:
ou você pode configurá-lo programaticamente .
Nota: se você estiver atualizando de uma versão mais antiga da biblioteca de suporte, não se esqueça de aumentar a versão do SDK de compilação. Verifique as versões do libraray de suporte aqui: Versões da Biblioteca de Suporte
No entanto, você ainda poderá receber a mensagem labelVisibilityMode não encontrado ao compilar, se o seu aplicativo depender de versões mais antigas da biblioteca de suporte ao design. Se for esse o caso, tente atualizar para uma versão da dependência fornecida, que depende de pelo menos a versão de 28.0.0-alpha1 da biblioteca de suporte ao design. Se isso não for possível, defina a dependência explicitamente.
Se você usa Gradle
Para adicionar dependência de suporte de design explicitamente em seu build.gradle :
implementação 'com.android.support:design:28.0.0'
fonte
Para resposta atualizada usando o padrão. Atualizar para a biblioteca de design mais recente
e coloque em seus atributos xml BottomNavigationView
você pode colocá-lo também como programaticamente
Você pode encontrar a fonte aqui BottomNavigationView
Espero que isso ajude você.
fonte
app:labelVisibilityMode
?Para seu
BottomNavigationView
addapp:labelVisibilityMode="unlabeled"
o que resulta nos seguintes
fonte
É muito simples, basta adicionar uma propriedade no BottomNaviationView
fonte
Eu tive um comportamento estranho com BottomNavigationView. Quando eu selecionava qualquer item / fragmento, o fragmento empurra o BottomNavigationView um pouco mais para baixo, para que o texto do BottomNavigationView fique abaixo da tela, para que apenas os ícones fiquem visíveis e o texto oculto ao clicar em qualquer item.
Se você está enfrentando esse comportamento estranho, aqui está a solução. Basta remover
no seu layout raiz do fragmento. Basta remover isso e boom! BottomNavigationView funcionará bem, agora pode ser mostrado com texto e ícone. Eu tinha isso na minha raiz CoordinatorLayout do fragmento.
Também não se esqueça de adicionar
em sua atividade para desativar o modo de mudança. Embora não esteja exatamente relacionado à pergunta, mas ainda assim acho útil.
fonte
Esta é uma biblioteca de terceiros que eu uso e possui muitas opções de personalização, como desativar o modo shift, mostrando apenas ícones, definindo o tamanho dos ícones etc. BottomNavigationViewEx
fonte
Para remover completamente as animações:
Se você também quiser se livrar dessa pequena e irritante animação de margem superior, precisará de mais código de reflexão. Aqui está a solução completa que remove qualquer animação:
E certifique-se de adicionar isso ao seu arquivo de configuração proguard:
fonte
atualize sua biblioteca de suporte para 28.0.0.
fonte
Se você estiver usando o suporte: design: 28.0.0, adicione este aplicativo de linha: labelVisibilityMode = "unlabeled" ao seu BottomNavigationView
fonte
só quero adicionar que acima desse método disableShiftMode também adicione o código abaixo. @SuppressLint ("RestrictedApi")
fonte
https://android.jlelse.eu/disable-shift-label-animation-from-bottom-navigation-android-b42a25dcbffc
1
2
3
fonte
Você pode usar isso para mostrar texto e ícones no BottomNevigationView para 3 a 5 itens e parar de mudar.
Mas você enfrentará um problema de corte de texto longo no BottmNevigationView para 5 itens. por isso, encontrei boas soluções para interromper a troca de texto, bem como ícones de BottomNevigationView. Você também pode interromper a troca de texto e também os Ícones no BottomNevigationView. Instantâneos de código são fornecidos aqui.
1. Adicione alguma linha de código a BottomNevigationView, como mostrado
2. Adicione itens de menu da seguinte forma: -
3.Adicione este estilo no arquivo style.xml:
4) Adicione-os na pasta Dimen
I teve ajuda de estes ligação e ligar .Você também pode obter obter ajuda estudar esses links.This me ajuda lot.Hope isso também ajudá-lo. Obrigado....
fonte