Android底部导航栏图标失真

时间:2019-08-22 21:16:41

标签: xml android-studio android-layout

我遇到一个神秘的问题。在Android底部导航栏中,我更改了默认的3个图标,并尝试使用4个图标。

图标现在变形了。图标底部有某种空白的覆盖层。所有代码都已签出,所以我不确定是什么问题。

Icon Distortion

我在StackOverflow上发现并尝试了此操作,但无济于事...

@SuppressLint("RestrictedApi")
public static void disableShiftMode(BottomNavigationView view) {
    BottomNavigationView menuView = (BottomNavigationView) view.getChildAt(0);
    try {
        Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
        ((Field) shiftingMode).setAccessible(true);
        shiftingMode.setBoolean(menuView, false);
        shiftingMode.setAccessible(false);
        for (int i = 0; i < menuView.getChildCount(); i++) {
            BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
            //noinspection RestrictedApi
            item.setShifting(false);
            // set once again checked value, so view will be updated
            //noinspection RestrictedApi
            item.setChecked(item.getItemData().isChecked());
        }
    } catch (NoSuchFieldException e) {
        Log.e("BNVHelper", "Unable to get shift mode field", e);
    } catch (IllegalAccessException e) {
        Log.e("BNVHelper", "Unable to change value of shift mode", e);
    }
}

我尽力调整了XML布局视图。

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/nav_view"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:background="?android:attr/windowBackground"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/bottom_nav_menu" />

1 个答案:

答案 0 :(得分:0)

我正在为此使用' com.google.android.material:material:1.1.0-alpha07 '版本。

我已在xml中添加了它:

 <com.google.android.material.bottomnavigation.BottomNavigationView
                android:id="@+id/nav_view"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:background="?android:attr/windowBackground"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:menu="@menu/bottom_nav_menu"/>

我也在Activity的onCreate中添加了以下行

navigation.itemIconTintList = null

这很好。图标没有失真。尝试为nav_view添加固定高度。

希望它可以解决您的问题。