Android Studio BottomNavigationView图标问题

问题描述 投票:3回答:3

我正在使用BottomNavigationView作为我的应用程序。一切都很酷,但当我有超过3个项目时,这些项目会在点击时移动。

我的意思是,所选项目,获得更多边框,其他未选择项目,移开​​,粘在一起。

但我的想法是导航菜单,如Instagram。如果我单击导航菜单中的某个项目,则所有项目都保持不变,不会开始向左或向右移动。

我怎样才能做到这一点?

android bottomnavigationview
3个回答
1
投票

首先,您应该将其添加到维度文件中:

<dimen name="design_bottom_navigation_text_size" tools:override="true">10sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">10sp</dimen>

然后,申请栏中的每个项目:

@SuppressLint("PrivateResource")
fun BottomNavigationView.fixSelectedItem(position: Int) {
    val bottomMenu = this.getChildAt(0) as? BottomNavigationMenuView
    val item = bottomMenu?.getChildAt(position) as? BottomNavigationItemView
    item?.let {
        val activeLargeLabel = it.findViewById<TextView>(com.google.android.material.R.id.largeLabel)

        if (activeLargeLabel != null && activeLargeLabel is TextView) {
            activeLargeLabel.setPadding(0, 0, 0, 0)
            activeLargeLabel.ellipsize = TextUtils.TruncateAt.END
        }
    }
}

注意:这个名字design_bottom_navigation_com.google.android.material.RSupport Legacy libs中可能有所不同。这是来自AndroidX

这是解决方法如何修复该缩放效果。


0
投票

BottomNavigationView的实现有条件:当有超过3个项目时,则使用shift模式。因此,要禁用此效果,您必须将此行代码添加到BottomNavigationView XML

app:labelVisibilityMode="labeled"

PS:您需要支持库28.0.0及更高版本


-2
投票

您可以使用它在BottomNavigationView上显示3到5个项目的文本和图标并停止移动。

 app:labelVisibilityMode="labeled"

但是你将面临在BottmNevigationView上为5个项目进行长文本剪切的问题。为此,我找到了一个很好的解决方案,用于停止文本移动以及BottomNevigationView的图标。您也可以停止文本移动以及BottomNevigationView上的图标。这里给出了一些代码。

1.在BottomNevigationView中添加一些代码,如图所示

<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="@dimen/seventy_dp"
    android:layout_semitransparent="true"
    android:background="@color/colorBottomNev"
    android:showAsAction="always|withText"
    app:itemIconTint="@drawable/bottom_navigation_colors"
    app:itemTextColor="@drawable/bottom_navigation_colors"
    app:itemTextAppearanceActive="@style/BottomNavigationViewTextStyle"
    app:itemTextAppearanceInactive="@style/BottomNavigationViewTextStyle"
    app:menu="@menu/bottom_navigation_menu"
    app:labelVisibilityMode="labeled"/>

2.添加如下菜单项: -

 <?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">

    <item
        android:id="@+id/action_catalogue"
        android:icon="@drawable/catalogue"
        android:title="@string/catalogue"
        android:enabled="true"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_contracts"
        android:icon="@drawable/contract"
        android:title="@string/contracts"
        android:enabled="true"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_prospects"
        android:icon="@drawable/prospect"
        android:title="@string/prospects"
        android:enabled="true"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_performance"
        android:icon="@drawable/performance"
        android:title="@string/performance"
        android:enabled="true"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_advance"
        android:icon="@drawable/advance"
        android:title="@string/advance"
        android:enabled="true"
        app:showAsAction="ifRoom" />

</menu>

3.在style.xml文件中添加此样式:

 <style name="BottomNavigationViewTextStyle">
            <item name="android:fontFamily">@font/montmedium</item>
            <item name="android:textSize">10sp</item>
            <item name="android:duplicateParentState">true</item>
            <item name="android:ellipsize">end</item>
            <item name="android:maxLines">1</item>
        </style>

4)在Dimen文件夹中添加这些

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
    <dimen name="design_bottom_navigation_text_size" tools:override="true">10sp</dimen>
    <dimen name="design_bottom_navigation_active_text_size" tools:override="true">10sp</dimen>
</resources>

我得到了这些linklink的帮助。你也可以通过研究这些链接得到帮助。这对我有很大的帮助。希望这也对你有所帮助。谢谢....

© www.soinside.com 2019 - 2024. All rights reserved.