KOTLIN - Первый элемент в BottomNavigationBar не виден, проблемы с названием - PullRequest
1 голос
/ 05 марта 2020

У меня есть BottomNavigationBar с 5 пунктами. Первый элемент такой же, как и остальные, кроме имени и значка. Вот xml для меню bottom_nav

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

    <item
        android:id="@+id/name_configuration"
        android:title="Name Mech"
        android:icon="@drawable/ic_action_name"
        />

    <item
        android:id="@+id/mech_skills"
        android:title="Skills"
        android:icon="@drawable/ic_action_skills"
        />

    <item
        android:id="@+id/stat_hub"
        android:title="Stat Hub"
        android:icon="@drawable/ic_action_stats"
        />

    <item
        android:id="@+id/mech_weapons"
        android:title="Weapons"
        android:icon="@drawable/ic_action_weapon"
        />

    <item
        android:id="@+id/mech_systems"
        android:title="Systems"
        android:icon="@drawable/ic_action_system"
        />
</menu>

А вот xml для рисования, которое я использую для иконок

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24"
    android:tint="#FFFFFF"
    android:alpha="0.8">
    <path
        android:fillColor="#FF000000"
        android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
</vector>

Наконец, вот xml, который я использую для самого бара

<com.google.android.material.bottomnavigation.BottomNavigationView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btm_nav"
        app:layout_constraintBottom_toBottomOf="parent"
        android:background= "@color/colorPrimary"
        app:menu="@menu/bottom_nav"/>

xml для остальных элементов рисования одинаков (они используют разные значки, но это не относится к самому xml). Однако элемент name_configuration невидим в нижней панели навигации. При нажатии он ведет себя так же, как и другие элементы (они передают значения SharedPreferences и переходят к другим действиям), он просто невидим. Однако при нажатии других кнопок на нижней панели навигации кнопка «Имя» на короткое время приобретает правильный цвет / прозрачность, прежде чем приложение переходит к следующему действию, а кнопка «Имя» снова становится невидимой.

Кроме того, заголовок для Name Mech является единственным заголовком, который появляется для любой из кнопок в нижней панели навигации. «Name Mech» отображается под значком в нижней панели навигации, но «Skills», «StatHub», «Weapons» и «Systems» не отображаются под соответствующими значками в нижней панели навигации.

Любое руководство будет с благодарностью.

Ответы [ 3 ]

1 голос
/ 05 марта 2020

Когда вы не устанавливаете 'labelVisibilityMode' для своего BottomNavigationView, его значение по умолчанию является автоматическим, и в этом режиме помечается только первый элемент, а другой - без ярлыка. Когда вы устанавливаете для labelVisibilityMode значение labelised, все элементы будут помечены.

В режиме по умолчанию это:

app:labelVisibilityMode="auto"

Вы меняете его на:

app:labelVisibilityMode="labeled"

Также, если вы вообще не хотите метку, просто установите:

app:labelVisibilityMode="unlabeled"
1 голос
/ 05 марта 2020

У меня была такая же проблема, но теперь мой код работает правильно. Попробуйте мой код:

В build.gradle (: app):

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:28.0.0'
}

В XML:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/navigationView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="0dp"
        android:layout_marginStart="0dp"
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:itemBackground="@color/colorPrimary"
        app:itemIconTint="#fff"
        app:itemTextColor="#fff"
        app:menu="@menu/menu"
        app:labelVisibilityMode="unlabeled"/>
</androidx.constraintlayout.widget.ConstraintLayout>
1 голос
/ 05 марта 2020

Ваши ярлыки скрыты видом. Вы можете установить app:labelVisibilityMode="labeled" в BottomNavigationView, чтобы заставить их появляться. Я считаю, что если они займут слишком много места, текст будет обрезан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...