菜单项图标下的空标题空间

时间:2018-08-06 08:22:14

标签: android

我使用了这样的菜单项:

<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” 因此,底部的栏现在有图标,并且图标下方没有文本,但是它仍然具有空白标题空间,这会使图标变小 所以我该如何设置没有标题的标题,例如使标题空间消失而又不占空间,并保留所有图标以使其比现在大

这是我底部栏的照片:

enter image description here

您可以在图标下看到null标题上的空格,因此如何使图标的所有空格(如电视图标周围的粉红色正方形)变大,因为我试图更改项目和其他解决方案的宽度和高度,但没有做任何更改工作

1 个答案:

答案 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);