Создание bottomnavigation c другим оформлением

Нужно сделать подобный bottomnavigation. Это невозможно сделать с помощью селектора. Причем он должен быть с радиусом.введите сюда описание изображения

Так же пытался сделать через app:itembackground. Это я думаю подходящий вариант, в него можно поставить фон с selector. Но размер не тот На фото белым выделен фон обеих элементов item.

Код самого bottomnavigation

<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/nav_menu"
        android:layout_width="match_parent"
        android:layout_height="83dp"
        app:itemBackground="@color/white"
        android:background="@drawable/bottomnavigation_bg"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0"
        app:menu="@menu/navigation_menu" />

Код bottomnavigation_bg

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
   <corners android:topLeftRadius="25dp"
                      android:topRightRadius="25dp"/>
   <solid android:color="#4F4F4F"/>
</shape>

Ответы (1 шт):

Автор решения: Andrew

По логике я думаю должно быть так - вы сетите background для контейнера bottomNavigationView и отдельно для элементов меню. У меня была подобная задача, ниже прикладываю свой код и попутно объясню как оно выглядит. Вот мой bottomNavigation:

<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation_t"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:itemBackground="@color/bottom_nav_color"
        app:itemIconTint="@drawable/selected_text"
        app:itemTextColor="@drawable/selected_text"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/main_bottom_nav_menu" />

вот файл selected_text.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white" android:state_checked="true" />
    <item android:color="#4D4D4D" />
</selector>

и поведение такое как вам нужно, цвета конечно у меня свои, но я думаю логика будет понятна. Вам, если этот код у вас приживется, нужно будет добавить только фон для контейнера менюшки. Сделать фоновый drawable файл с закругленными углами я думаю не оч сложно. В фон нужно будет добавить радиус для каждого угла:

<corners 
  android:bottomRightRadius="0.1dp" android:bottomLeftRadius="2dp" 
 android:topLeftRadius="2dp" android:topRightRadius="0.1dp" />

ну и фон то понятное дело тоже нужен будет) Вот есть видео-урок как сделать фон, вот документация material design

UPDATE

Решил добить ваш вопрос, вот итоговый результат:

введите сюда описание изображения

вот мой общий фон виджета:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid android:color="#1bc0a7" />
    <corners android:topRightRadius="20dp"
        android:topLeftRadius="20dp"/>
</shape>

а селекторы которые выше. Надеюсь у вас получится что-то типа такого тоже :)

→ Ссылка