我使用了这样的菜单项:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/tab_bookmarks"
android:icon="@drawable/bookmark"
android:title="@null"/>
<item
android:id="@+id/tab_shasha"
android:icon="@drawable/shasha"
android:height="54dp"
android:width="24dp"
android:title="@null"/>
<item
android:id="@+id/tab_home"
android:icon="@drawable/home"
android:title="@null"/>
<item
android:id="@+id/tab_tv"
android:icon="@drawable/tv"
android:title="@null"/>
<item
android:id="@+id/tab_more"
android:icon="@drawable/more"
android:title="@null"/>
这是上面项目中提到的可绘制对象之一,例如android:icon =“ @ drawable / tv”,所以这是tv.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:drawable="@drawable/ic_tab_tv_selected" />
<item
android:state_checked="false"
android:bottom="13dp"
android:drawable="@drawable/ic_tab_tv"/>
</selector>
然后我在bottomNavigationView中使用此菜单,如下所示:
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
bottomNavigationView.setOnNavigationItemSelectedListener
(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.tab_bookmarks:
selectedFragment = BookmarksFragment.newInstance();
break;
case R.id.tab_home:
selectedFragment = AboutUs.newInstance();
break;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, selectedFragment);
transaction.commit();
return true;
}
});
一切正常,但是如您所见,菜单项带有图标,但我将标题设置为“ @null” 因此,底部的栏现在有图标,并且图标下方没有文本,但是它仍然具有空白标题空间,这会使图标变小 所以我该如何设置没有标题的标题,例如使标题空间消失而又不占空间,并保留所有图标以使其比现在大
这是我底部栏的照片:
您可以在图标下看到null标题上的空格,因此如何使图标的所有空格(如电视图标周围的粉红色正方形)变大,因为我试图更改项目和其他解决方案的宽度和高度,但没有做任何更改工作
答案 0 :(得分:1)
尝试使用此方法:
public void updateBottomBar() {
BottomNavigationMenuView menuView = (BottomNavigationMenuView) bottomNavigationView.getChildAt(0);
if (menuView != null) {
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView menuItemView = (BottomNavigationItemView) menuView.getChildAt(i);
ImageView icon = menuItemView.findViewById(R.id.icon);
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) icon.getLayoutParams();
params.gravity = Gravity.CENTER;
}
}
}
更改制表符位置时必须调用它。
更新
还有一个更漂亮的解决方案,它与支持库28.0.0-alpha1一起使用:
bottomNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_UNLABELED);
或
<android.support.design.widget.BottomNavigationView
app:labelVisibilityMode="unlabeled" />
并删除您的代码BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);