BottomNavigationView(design包提供的一个组件)
程序员文章站
2022-05-24 21:11:39
...
它是design包提供的一个底部导航栏组件。效果如图(有动画效果)
既然是design包的组件。那么使用前,肯定要导入包依赖,且design包必须是25以上,因为这个组件是在design更新到25才有的。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:design:25.3.1'
testCompile 'junit:junit:4.12'
}
使用起来比较容易只要布局引入,添加menu,然后给他添加监听就可以了。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.design.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/page"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<android.support.design.widget.BottomNavigationView
android:id="@+id/bnv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:menu="@menu/navigation" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/item1"
android:title="第一个"
android:icon="@drawable/ic_arrow_back_black_24dp" />
<item
android:id="@+id/item2"
android:title="第二个"
android:icon="@drawable/ic_arrow_downward_black_24dp" />
<item
android:id="@+id/item3"
android:title="第三个"
android:icon="@drawable/ic_arrow_forward_black_24dp" />
<item
android:id="@+id/item4"
android:title="第四个"
android:icon="@drawable/ic_arrow_upward_black_24dp" />
</menu>
bnview= (BottomNavigationView) findViewById(R.id.bnv);
bnview.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.item1:
viewPager.setCurrentItem(0);
break;
case R.id.item2:
viewPager.setCurrentItem(1);
break;
case R.id.item3:
viewPager.setCurrentItem(2);
break;
case R.id.item4:
viewPager.setCurrentItem(3);
break;
}
return true;
}
});
布局引入了BottomNavigationView,里面要通过app:menu="@menu/navigation 为它指定一个菜单布局。菜单的内容就是它要显示的东西。
还可通过app:itemIconTint="@android:color/white"来定义显示的图标颜色。
app:itemTextColor="@android:color/white" 来定义文字颜色
app:itemBackground="@android:color/black" 来定义导航栏背景。
在menu中,title指定文字,icon指定图标。其中icon一般指定为矢量图,也可以指定为其他图标,不过只显示为黑色,至于矢量图相关。文章后面会有介绍。菜单中元素的个数最后为3-5个。少了不会出错,但不协调,多了会出错。
活动中给他们添加监听,不过这个监听默认的返回值是false。这个地方注意了。返回值必须改为true,不然没有动画效果,这就是BottomNavigationView 没有动画效果的原因,所以返回值改为true。
我这里是用BottomNavigationView+Viewpager+fragment实现了一个可切换页面的底部导航栏。
最后说一下矢量图。至于矢量图的概念,读者自行百度。找到drawable有键new,找到vector asset进入。
点击icon小图标会出来as自带的矢量图,还可以点右边的local file导入本地矢量图,但是只支持svg和psd格式。矢量图库有很多矢量图一般情况都能用得上
上一篇: 简单的验证码实现
推荐阅读
-
详解auto-vue-file:一个自动创建vue组件的包
-
详解如何制作并发布一个vue的组件的npm包
-
详解如何制作并发布一个vue的组件的npm包
-
BottomSheetDialog(design包的一个组件)
-
JAVA三维可视化组件:Matplot 3D for JAVA(V3.0) 一个纯JAVA开发的科学数据可视化组件包 类似 Python 的matplotlib
-
BottomNavigationView(design包提供的一个组件)
-
关于 Ant Design 中 Input 组件的 defaultValue 属性的一个小问题
-
JAVA三维可视化组件:Matplot 3D for JAVA(V3.0) 一个纯JAVA开发的科学数据可视化组件包 类似 Python 的matplotlib