Как добавить строку (представление) под каждым именем элемента в нижнем навигационном представлении?

Я хочу добавить строку под каждым названием элементов. Как я могу сделать это с нижней навигацией? Изображение имеет оранжевую линию под названием элемента. Поэтому он должен быть виден только для выбранного элемента. Я сделал с линейной компоновкой. Мне нужно сделать с нижним представлением навигации.

Пожалуйста, проверьте это изображение. Я сделал с функциями селектора для этого

атрибут app:itemBackground="@drawable/selector"


person Ahmed Suhail    schedule 21.06.2019    source источник
comment
Вы можете настроить элементы, установив app:itemBackground=@drawable/bottom_nav_item_background, где bottom_nav_item_background — это селектор, который обрабатывает выбранные/не выбранные состояния и обеспечивает различный вид в зависимости от состояния.   -  person Tim    schedule 21.06.2019
comment
Подскажите, пожалуйста, как реализовать приведенный ниже код ‹?xml version=1.0 encoding=utf-8?› ‹shape xmlns:android=schemas.android.com/apk/res/android android:shape=line› ‹stroke android:width=1dp android:color=#fd724a /› ‹size android:height= 1dp /› ‹/shape› на фоне элементов нижней навигации.   -  person Ahmed Suhail    schedule 21.06.2019
comment
@TimCastelijns Пожалуйста, проверьте, я пробовал то, что вы сказали. Линия (вид), появляющаяся в центре. Подскажите пожалуйста как это побороть?   -  person Ahmed Suhail    schedule 21.06.2019
comment
ИДК, добавьте отступы или что-то в форме   -  person Tim    schedule 21.06.2019
comment
Хорошо, я попробую код с возможностью рисования. Благодарю вас!   -  person Ahmed Suhail    schedule 21.06.2019


Ответы (1)


Для этого:

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

  1. Создайте 2 чертежа, 1 белый и 1 без подчеркивания.
  • Белая линия:
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle">
                <solid android:color="#FFFFFF" />
            </shape>
        </item>
        <item
            android:right="20dp"
            android:left="20dp">
            <shape>
                <stroke
                    android:width="4dp"
                    android:color="@color/bottom_sheet_divider" />
                <solid android:color="@color/transparent" />
            </shape>
        </item>
        <item
            android:bottom="4dp">
            <shape>
                <solid android:color="@android:color/white" />
            </shape>
    
        </item>
    </layer-list>
  • без строки:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item android:top="-41dp" android:right="-41dp" android:left="-41dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="4dp"
                android:color="#FFFFFF" />
        </shape>
    </item>
</layer-list>
  1. Создайте доступное для рисования состояние с проверенным состоянием
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/line_selected" android:state_checked="true"/>
    <item android:drawable="@drawable/line_unselected" android:state_checked="false"/>
</selector>
  1. Добавьте этот рисунок в BottomNavigationView
<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
--->    app:itemBackground="@drawable/item_line"
        app:menu="@menu/bottom_navigation_menu" />
person David Arribas    schedule 12.08.2020