我正在使用BottomNavigationView
作为我的应用程序。一切都很酷,但当我有超过3个项目时,这些项目会在点击时移动。
我的意思是,所选项目,获得更多边框,其他未选择项目,移开,粘在一起。
但我的想法是导航菜单,如Instagram。如果我单击导航菜单中的某个项目,则所有项目都保持不变,不会开始向左或向右移动。
我怎样才能做到这一点?
首先,您应该将其添加到维度文件中:
<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.R
在Support Legacy
libs中可能有所不同。这是来自AndroidX
。
这是解决方法如何修复该缩放效果。
BottomNavigationView的实现有条件:当有超过3个项目时,则使用shift模式。因此,要禁用此效果,您必须将此行代码添加到BottomNavigationView XML
app:labelVisibilityMode="labeled"
PS:您需要支持库28.0.0及更高版本
您可以使用它在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>
我得到了这些link和link的帮助。你也可以通过研究这些链接得到帮助。这对我有很大的帮助。希望这也对你有所帮助。谢谢....