Как нарисовать линию в пункте меню - PullRequest
0 голосов
/ 10 июня 2019

Я хочу поместить эту маленькую зеленую линию в активный элемент меню ... уже нужно создать фигуру и собственный стиль, но безуспешно ...

enter image description here

Мой activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <group android:checkableBehavior="single">

        <item
            android:id="@+id/nav_ordem"
            android:checked="true"
            android:title="Home"/>

        <item
            android:id="@+id/nav_auto_infracao"
            android:title="Payment Profile" />
        <item
            android:id="@+id/nav_apreensao_deposito"
            android:title="Payment history" />
        <item
            android:id="@+id/nav_doacao"
            android:title="My card" />
        <item
            android:id="@+id/nav_sincronia"
            android:title="Frinds" />
    </group>

</menu>

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Один из способов решить эту проблему - вы можете выделить элемент, вызвав следующий метод, чтобы определить, когда следует изменить видимость и позиционировать вид:

onNavigationItemSelected(navigationView.getMenu().getItem(0));

Поскольку вы упомянули, у вас уже есть формаи пользовательский стиль, поместите представление (здесь в этом коде ниже, selectedItemBottomView) внутри NavigationView in activity_main или файла макета XML, где вы использовали activity_main_drawer, например:

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:menu="@menu/activity_main_drawer" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <View
                    android:id="@+id/selectedItemBottomView"
                    android:layout_width="match_parent"
                    android:layout_height="10dp"
                    android:background="@color/green" />
            </LinearLayout>
        </RelativeLayout>
    </com.google.android.material.navigation.NavigationView>

</androidx.drawerlayout.widget.DrawerLayout>

При выборе измените видимость или положение в соответствии с вашими требованиями:

selectedItemBottomView.setVisibility(View.VISIBLE);

Надеюсь, это поможет.

0 голосов
/ 10 июня 2019

Попробуйте использовать вид, чтобы нарисовать линию.

<View
 android:layout_width="match_parent"
 android:layout_height="1dp"
 android:background="@android:color/black" />
...