简体   繁体   English

Android底部导航栏4项目在某些设备上无法正确显示

[英]Android Bottom Navigation bar 4 Items not showing properly on some devices

I got a little problem, as I'm trying to add 4 Icons to a Bottom Navigation Bar in Android. 我遇到了一个小问题,因为我试图将4个图标添加到Android的底部导航栏中。

On some devices it looks like this 在某些设备上看起来像这样

But I want it to be looking like this 但我希望它看起来像这样

How to achieve that ? 如何实现呢? Thanks in advance 提前致谢

Don't know which code you need. 不知道您需要哪个代码。 Just added everything used by the viewpager for the Bottom navigation Bar 刚刚添加了viewpager用于底部导航栏的所有内容

    bottomNavigationView.setOnNavigationItemSelectedListener(
            new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.action_stdplan:
                            viewPager.setCurrentItem(0);
                            break;
                        case R.id.action_klausur:
                            viewPager.setCurrentItem(1);
                            break;
                        case R.id.action_hausaufgaben:
                            viewPager.setCurrentItem(2);
                            break;
                        case R.id.action_fehlzeiten:
                            viewPager.setCurrentItem(3);
                            break;
                    }
                    return false;
                }
            });



    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }


        @Override
        public void onPageSelected(int position) {
            if (prevMenuItem != null) {
                prevMenuItem.setChecked(false);
            }
            else
            {
                bottomNavigationView.getMenu().getItem(0).setChecked(false);
            }
            Log.d("page", "onPageSelected: "+position);
            bottomNavigationView.getMenu().getItem(position).setChecked(true);
            prevMenuItem = bottomNavigationView.getMenu().getItem(position);

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

    setupViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    stdplanFragment =new StdplanFragment();
    klausurenFragment =new KlausurenFragment();
    hausaufgabenFragment =new HausaufgabenFragment();
    fehlzeitenFragment =new FehlzeitenFragment();
    adapter.addFragment(stdplanFragment);
    adapter.addFragment(klausurenFragment);
    adapter.addFragment(hausaufgabenFragment);
    adapter.addFragment(fehlzeitenFragment);
    viewPager.setAdapter(adapter);
}

} }

bottom_navigation.xml: bottom_navigation.xml:

    <?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_stdplan"
        android:checked="true"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/tab1"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_klausur"
        android:checked="false"
        android:icon="@android:drawable/ic_menu_agenda"
        android:title="@string/tab2"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_hausaufgaben"
        android:checked="false"
        android:icon="@android:drawable/ic_menu_manage"
        android:title="Hausaufgaben"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_fehlzeiten"
        android:checked="false"
        android:icon="@android:drawable/ic_menu_recent_history"
        android:title="@string/tab3"
        app:showAsAction="never" />
</menu>

I fixed it myself by changing the font size of the titles 我自己通过更改标题的字体大小来修复它

Everyone else struggling with this: Just add these two lines to your dimens.xml 其他为此苦苦挣扎的人:只需将这两行添加到您的dimens.xml中

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

It could be a problem from a smallest thing possible. 从最小的角度来看可能是一个问题。 Not sure if it has anything to do with the image icons you have used, but can you please see if the image icons happen to have any paddings ie in the image itself? 不知道它是否与您使用过的图像图标有关,但是请您查看图像图标是否恰好有填充物,即图像本身吗?

Also for debugging purposes please remove the titles or keep them empty and see if it aligns the image icons properly. 同样出于调试目的,请删除标题或将标题保留为空,以查看其是否与图像图标正确对齐。

Can you please change the following, 您可以更改以下内容吗?

app:showAsAction="never"

to

app:showAsAction="ifRoom"

I would try following this link just in case. 我会尝试遵循此链接 ,以防万一。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM