O uso da barra de navegação inferior do Android BottomNavigationView

O uso da barra de navegação inferior do Android BottomNavigationView

Uso básico

Importe dependências primeiro (aqui, pegue o AndroidX como exemplo)

implementation 'com.google.android.material:material:1.0.0'

Use no layout

<com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottomNavigationView"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:background="@color/white"
            app:itemBackground="@null"
            app:itemTextColor="@drawable/sl_tab_color"
            app:labelVisibilityMode="labeled"
            app:layout_constraintBottom_toBottomOf="parent"
            app:menu="@menu/navigation_item" />

Onde app: itemTextColor = "@ drawable / sl_tab_color" é a seleção de cor da fonte quando o botão é selecionado e não selecionado. O arquivo navigation_item.xml é:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_main"
        android:icon="@drawable/sl_tab_main_main"
        android:title="@string/menu_main"/>

    <item
        android:id="@+id/menu_project"
        android:icon="@drawable/sl_tab_main_project"
        android:title="@string/menu_project"/>

    <item
        android:id="@+id/menu_wechat"
        android:icon="@drawable/sl_tab_main_wechat"
        android:title="@string/menu_wechat"/>

    <item
        android:id="@+id/menu_system"
        android:icon="@drawable/sl_tab_main_system"
        android:title="@string/menu_system"/>
</menu>

Entre eles, android: icon = "@ drawable / sl_tab_main_system" é a seleção do ícone quando o botão de configuração é selecionado e desmarcado.
Efeito de exibição:
Insira a descrição da imagem aqui


Nota:

Existe o seguinte trecho de código no código-fonte de BottomNavigationView

public int getMaxItemCount() {
        
        
        return 5;
}

Então, quando o número de itens que adicionamos no arquivo de menu for maior que 5, um erro será relatado

Exibição de efeito comum

1. Remova o efeito de fundo ondulado da água que aparece quando você clica
app:itemBackground="@null"
2. Remova o efeito de animação e deslocamento ao clicar
app:labelVisibilityMode="labeled"

Os valores dos atributos são rotulados, não rotulados, selecionados e
rotulados automaticamente : ícones e rótulos são exibidos em todos os botões.
sem rótulo: nenhum rótulo é exibido em todos os botões, apenas ícones são exibidos.
selecionado: apenas o botão selecionado exibe o rótulo e o ícone, e o outro não selecionado exibe apenas o ícone.
auto: modo automático, este modo usa o número de itens para determinar se deve mostrar ou ocultar o rótulo. O modo rotulado é usado quando o número de botões é menor ou igual a 3, e o modo selecionado é usado quando há mais de 3 botões.

Este método só pode ser usado quando a API usada atualmente é maior que 28. Quando api é menor que 28, o seguinte método pode ser usado:

@SuppressLint("RestrictedApi")
public static void disableShiftMode(BottomNavigationView view) {
        
        
    BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    try {
        
        
        Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
        shiftingMode.setAccessible(true);
        shiftingMode.setBoolean(menuView, false);
        shiftingMode.setAccessible(false);
        for (int i = 0; i < menuView.getChildCount(); i++) {
        
        
            BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
            item.setShiftingMode(false); 
            item.setChecked(item.getItemData().isChecked());
        }
    } catch (NoSuchFieldException e) {
        
        
        Log.e( "TAG","Unable to get shift mode field");
    } catch (IllegalAccessException e) {
        
        
        Log.e( "TAG","Unable to change value of shift mode");
    }
}
3. Remova a modificação de cor padrão do ícone quando clicado
bottomNavigationView.itemIconTintList = null
4. Modifique o tamanho do texto

Adicione no arquivo de recurso dimens.xml

<dimen name="design_bottom_navigation_active_text_size" tools:override="true">12sp</dimen>
<dimen name="design_bottom_navigation_text_size" tools:override="true">12sp</dimen>

Uso na atividade

bottomNavigationView.setOnNavigationItemSelectedListener {
       
       
         when (it.itemId) {
       
       
                R.id.menu_main -> {
       
       
                         //todo
                }
                R.id.menu_project -> {
       
       
                        //todo
                }
                R.id.menu_system -> {
       
       
                           //todo
                }
                R.id.menu_wechat -> {
       
       
                          //todo
                }
            }
            true
        }

Se você precisar obter informações sobre um botão específico, pode chamar o seguinte código

Insira a descrição da imagem aqui


Atualizando continuamente ...
Endereço de aprendizado de referência do artigo: https://www.jianshu.com/p/d5fb8ff21b4f

Acho que você gosta

Origin blog.csdn.net/weixin_44325444/article/details/107185522
Recomendado
Clasificación