【发布时间】:2017-12-11 23:54:41
【问题描述】:
我有一个BottomNavigationView,我这样实例化它:
BottomNavigationView navigationView = findViewById(R.id.bottom_navigation);
navigationView.setOnNavigationItemSelectedListener(this);
/menu/menu.xml 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/first_id"
android:icon="@drawable/home_icon"
android:title="Item" />
<item
android:id="@+id/second_id"
android:icon="@drawable/home_icon"
android:title="Item" />
<item
android:id="@+id/third_id"
android:icon="@drawable/home_icon"
android:title="Item" />
<item
android:id="@+id/fourth_id"
android:icon="@drawable/home_icon"
android:title="Item" />
</menu>
而 /drawable/home_icon 看起来像这样:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFFFF0"
android:pathData="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"
android:strokeColor="#FFFFF0"
android:strokeWidth="1" />
</vector>
如您所见,导航项的按钮周围有边框,但是,边框彼此接触。因此,我想在菜单按钮之间添加一个边距。我该怎么做?
从屏幕截图中也可以看出,我正在阻止转换模式。我通过调用来做到这一点
BottomNavigationViewHelper.removeShiftMode(navigationView);
使用来自here的代码。
按钮周围的边框是这样添加的:
int stateListDrawable = drawableStateLists.get(currentFragment);
navigationView.setItemBackgroundResource(stateListDrawable);
而stateListDrawable 指的是StateListDrawable,当按下不同的菜单按钮时它会发生变化。 StateListDrawable 指的是一个 xml 选择器,该选择器又指的是一个像这样的 xml 形状,例如:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp"/>
<stroke
android:width="2dp"
android:color="@color/intro"/>
</shape>
【问题讨论】:
-
你是如何添加这些边框的?
-
@azizbekian 请看我的编辑。
标签: java android android-layout android-view bottomnavigationview