Есть ли способ сделать так, чтобы пункты назначения в BottomNavigationView выглядели равномерно распределенными по его длине в ландшафтном режиме?

 Нижняя навигация показывает элементы, расположенные через равные промежутки

Было бы еще лучше, если бы текст отображался под соответствующим значком, а значки были бы равномерно распределены. В настоящее время элементы отображаются сложенными в ландшафтном режиме.

Текущая реализация:

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_nav_bar"
    style="@style/Widget.MaterialComponents.BottomNavigationView.Colored"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:itemIconTint="@color/selector_icon_tint_bottom_nav"
    app:itemTextColor="@color/selector_icon_tint_bottom_nav"
    app:labelVisibilityMode="labeled"
    app:menu="@menu/bottom_nav" />

person Manish Negi    schedule 27.12.2019    source источник
comment
Было бы неплохо, если бы вы показали какой-то код того, что вы делаете   -  person Umair Iqbal    schedule 27.12.2019


Ответы (1)


Попробуйте это, я надеюсь, что это сработает. Это работает для меня.

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

  <com.google.android.material.bottomnavigation.BottomNavigationView
      android:id="@+id/bottom_navigation"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="bottom"
      android:background="@color/colorPrimary"
      app:labelVisibilityMode="labeled" 
      app:itemIconTint="@color/white"
      app:itemTextColor="@color/white"
      app:menu="@menu/bottom_navigation_menu" />

</FrameLayout>

Создайте каталог меню под res и в этом каталоге создайте XML-макет.

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home"
        android:title="Home" />

    <item
        android:id="@+id/navigation_profile"
        android:icon="@drawable/ic_profile"
        android:title="Profile" />

    <item
        android:id="@+id/navigation_about"
        android:icon="@drawable/ic_aboutUs"
        android:title="About Us" />

    <item
        android:id="@+id/navigation_logout"
        android:icon="@drawable/ic_logout"
        android:title="Logout" />

</menu>

В основном действии реализуйте BottomNavigationView.OnNavigationItemSelectedListener и реализуйте его метод all, после чего вы можете выполнять желаемое действие на каждом значке.

 bottomNavigationView = findViewById(R.id.bottom_navigation_view);

    bottomNavigationView.setOnNavigationItemSelectedListener(this);

}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.navigation_home:
            Toast.makeText(this, "Home", Toast.LENGTH_SHORT).show();           
            return true;

        case R.id.navigation_profile:
            Toast.makeText(this, "Profile", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.navigation_about:
            Toast.makeText(this, "About Us", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.navigation_logout:
            Toast.makeText(this, "Logout", Toast.LENGTH_SHORT).show();
            return true;

    }

    return false;
}

Отредактировано: для видеоурока вы также можете посмотреть этот урок (https://www.youtube.com/watch?v=oeKtwd1DBfg)

person Umair Iqbal    schedule 27.12.2019
comment
Приоритет заключается в том, чтобы пункт назначения был расположен на равном расстоянии друг от друга. Есть ли способ сделать это? - person Manish Negi; 27.12.2019
comment
пожалуйста, покажите код вашей нижней навигации (на изображении они уже выглядят одинаково выровненными) - person Umair Iqbal; 27.12.2019
comment
Цель состоит в том, чтобы сделать нижнюю навигацию похожей на изображение, но с текстом, появляющимся под значками, а значки расположены на одинаковом расстоянии друг от друга. - person Manish Negi; 27.12.2019
comment
Хорошо, я обновляю ответ - person Umair Iqbal; 27.12.2019
comment
Я не понимаю, вы только что добавили цвет фона, гравитацию и обернули его внутри Framelayout, как это поможет? - person Manish Negi; 27.12.2019
comment
У меня он отлично работает. Загруженное вами изображение также выглядело выровненным, и если вы хотите, я могу опубликовать код для меню и для действия при выборе меню. - person Umair Iqbal; 27.12.2019
comment
У тебя есть решение? - person Umair Iqbal; 27.12.2019