如何在BottomNavigationMenu上选中按钮?

时间:2019-02-12 16:32:43

标签: android

我需要找到一种方法来选中其他任何BottomNavigationMenu按钮,而不是仅在活动刚刚打开时才被选中。

我已经阅读了大量文档,并在Google中进行了搜索,发现要达到我的目标,我应该在菜单项文件中使用 android:checked =“ true” 。但这对我来说不起作用。

这是我的 bottom_navigation.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/appointments_button"
        android:title="@string/appointment_menu_link"
        android:icon="@drawable/calendar_white"
        android:checked="false"/>
    <item android:id="@+id/booking_button"
        android:title="@string/booking_menu_link"
        android:icon="@drawable/plus_white"
        android:checked="true"/>
    <item android:id="@+id/user_account"
        android:title="@string/profile_menu_link"
        android:icon="@drawable/user_account"
        android:checked="false"/>
</menu>

我的活动文件下面 employee_list.xml

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

    <!-- Layout to contain contents of main body of screen (drawer will slide over this) -->
    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".BarbersActivity">

        <RelativeLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:paddingTop="?android:attr/actionBarSize">
            <ProgressBar
                android:id="@+id/progressBar"
                android:visibility="visible"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/AppTheme"
                android:layout_centerInParent="true"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:layout_marginBottom="56dp">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="64dp"
                    android:fontFamily="roboto-medium"
                    android:gravity="center_vertical"
                    android:paddingLeft="16dp"
                    android:text="@string/activity_masters"
                    android:textColor="#D9000000"
                    android:textFontWeight="500"
                    android:textSize="20sp"
                    android:textStyle="normal" />

                <ListView
                    android:id="@+id/list"
                    android:orientation="vertical"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:drawSelectorOnTop="true"/>

            </LinearLayout>

            <android.support.design.widget.BottomNavigationView
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/bottom_navigation"
                android:layout_width="match_parent"
                android:layout_height="56dp"
                android:layout_gravity="bottom"
                android:background="@color/primary_dark_color"
                app:menu="@menu/bottom_navigation"
                android:layout_alignParentBottom="true"
                app:itemIconTint="@drawable/bottom_navigation_black_icon_color"
                app:itemTextColor="@drawable/bottom_navigation_black_text_color">
            </android.support.design.widget.BottomNavigationView>
        </RelativeLayout>

        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar"/>

    </android.support.constraint.ConstraintLayout>

    <!-- Container for contents of drawer - use NavigationView to make configuration easier -->
    <android.support.design.widget.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/drawer_view"
    app:headerLayout="@layout/nav_header"
    android:background="#FFFFFF" />
</android.support.v4.widget.DrawerLayout>

我还向我的build.gradle依赖项中添加了 api'com.android.support:design:28.0.0'

请告知是否有可能实现我的目标。

1 个答案:

答案 0 :(得分:0)

我认为这只能通过代码来完成。试试这个: 调用bottomNavigationView.setOnNavigationItemSelectedListener(...)后,添加以下代码行:

bottomNavigationView.setSelectedItemId(R.id.booking_button);

或者: bottomNavigationView.getMenu().findItem(R.id.booking_button).setChecked(true);

这应该在BottomNavigationBar内选择所需的菜单项。