下面来看下BottomNavigationView该怎么使用:
首先创建一个工程,但是在创建Activity的时候要选择Bottom Navigation Activity,如下图:
创建完项目后直接运行就可以看到底部导航的效果了,下面我们来分析一下示例Demo:
一、分析依赖包
打开app的build.gradle文件,会发现它自动添加了几个依赖包
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:design:25.3.0'
compile 'com.android.support:support-vector-drawable:25.3.0'
谷歌更新了support:design:25.0.0以后就包含了BottomNavigationView,所以如果要自己写这个导航的话要先添加这个依赖包。
二、分析布局文件
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?android:attr/windowBackground"
app:menu="@menu/navigation" />
这些属性就不具体说了,应该都知道,但是你会发现最后一个是menu,原来它是可以以menu方式添加item的。menu文件如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
android:id="@+id/navigation_home"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/title_home" />
android:id="@+id/navigation_dashboard"
android:icon="@drawable/ic_dashboard_black_24dp"
android:title="@string/title_dashboard" />
android:id="@+id/navigation_notifications"
android:icon="@drawable/ic_notifications_black_24dp"
android:title="@string/title_notifications" />
</menu>
这里的图片是使用的SVG,具体我就不说了,这样三个item也就完成了。
三、分析Java代码
public class HomeActivity extends AppCompatActivity {
private TextView mTextMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
mTextMessage = (TextView) findViewById(R.id.message);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
mTextMessage.setText(R.string.title_home);
return true;
case R.id.navigation_dashboard:
mTextMessage.setText(R.string.title_dashboard);
return true;
case R.id.navigation_notifications:
mTextMessage.setText(R.string.title_notifications);
return true;
return false;
代码也很简单,首先去findid,找到BottomNavigationView控件,然后设置它的item点击事件setOnNavigationItemSelectedListener,最后重写它的item点击事件onNavigationItemSelected,在里面执行点击后的操作,示例代码中只是点击后在activity中的textview设置了item的文字内容,这样底部导航功能就实现了,如果跟fragment结合起来使用,就可以完成页面的切换了,是不是要比我们自己去写简单好看呢?
BottomNavigationView有几个地方需要注意:
1.底部导航栏高度默认是 56dp。
2.菜单元素只能是 1~5 个。如果个数多于5个,则会报错,建议3-5个最佳。
3.icon 的选中颜色默认是 @color/colorPrimary。当然你也可以使用 app:itemIconTint=”” 来自定义,这样定以后,所有的 icon 颜色都是这个了。
4.菜单元素文字的默认颜色是 @color/colorPrimary。你可以使用 app:itemTextColor=”” 自定义。
5.底部导航栏背景颜色默认是当前样式的背景色,你可以使用 app:itemBackground=”” 来更改。
6.它还有一个功能就是item对外提供了再次点击item监听setOnNavigationItemReselectedListener,类似于今日头条再次点击item刷新功能,至于再次点击要干什么,自己去实现好了。
7.我看到好多东西都是固定的,没法修改,所以使用需谨慎,要看公司需求和设计图。
PS:本人很渣,如有错误和问题,请联系我改正,谢谢
Android底部导航栏非常常见,很多项目都有使用。其实现方式也有很多种,TabHost、LinearLayout中使用button、RadioGroup等等,都可以实现这种导航栏的效果。随着Material Design的发展,也逐渐推出了一些自己的设计,BottomNavigationView是其中一个,个人觉得很好看,先贴一下效果图: 下面来看下BottomNavigationView
BottomNavigationView 很早之前就在 Material Design 中出现了,但是直到 Android Support Library 25 中才增加了 BottomNavigationView 控件。也就是说如果使用官方的BottomNavigationView控件必须让targetSdkVersion >= 25,这样才能引入25版本以上的兼容包。
接下来我们来看看如何使用BottomNavigationView。
使用BottomNavigationView 需要添加design兼容包的依赖。
dependencies {
//...
compile 'c
一个新的Android组件BottomNavigationView简单示例。
implementation ' com.google.android.material:material:1.1.0 '
AndroidX版本(主分支)
影片版本(影片分支)
没有动画(移移分支)
带片段(片段分支)
Caused by: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView Android5.0~6.0之间的兼容性问题
BottomNavigationView inflating错误问题
最近刚好跑一个demo,在Android studio 上编译,运行在Android5.1 的手机上,结果程序一运行就闪退。报错原因如下:
由于BottomNavigationView是android.material包里的控件,报错的原因首先考虑兼容性问题,下面逐一分析
我们常常遇到这样的任务场景,需要动手制作一个导航栏,要求在点击时图标颜色和文字发生改变,那么这样的场景应该如何实现呢?
一、图标的动态更改
图标的动态更改我们通过自定义Layout和BottomNavigationView中的属性进行更改
新建Menu等步骤就不进行赘述了,这一部分还不了解的朋友可以先看一下BottomNavigationView的使用
这里直接放出代码供大家进行阅读
<com.google.android.material.b
目录背景方法一文档摘录解决代码Ⅰ方法Ⅱ
最近在Android开发过程中使用了BottomNavigationView作为主Activity的导航栏,遇到了需要代码设置Item的模拟点击来实现子Fragment跳转效果,苦于论坛里找不到现成方法,只好上官方文档学习,故记录实现方法。
下面贴两个核心子方法的文档说明(api25+)
setSelectedItemId
public void setSelectedItemId (int itemId)
Set the selected