day03:BottomNagivationView基础

作者: 80b728bf255f | 来源:发表于2018-05-05 18:07 被阅读152次

今天说一下BottomNagivationView基础,先看一下效果图:

BottomNagivationView是一个底部导航栏,但是他有item限制,个数在3到5个之间,我今天写了五个,而且出了一些错误,百度一下最后得到解决的方法。今天就不说这个解决方法,但是我会把这个代码分享出来。

创建BottomNagivationView效果的步骤:

1、加载所依赖的库文件:implementation  'com.android.support:design:27.1.1'

2、在res下创建一个文件夹叫menu里面创建一个 .xml文件,这个文件是用来设置底部导航栏的文字(用我的为例子)

这里自己也可以加上图片,我嫌麻烦就没用。如果你想加载图片可以在加上android:icon=“ 图片的位置 ”;

3、建立主  .xml文件(除了第一个xmll文件在menu中,其他的都在layout中)。

上面的那个TextView控件简单了,就不用说了,下面的控件就是今天的主角BottomNavigationView,说一下它必须要知道的秘密:itemTextColor——字体的颜色设置,用selectot可以自己设置颜色的变化;itemiconTint——图片的颜色(这里我没有加图片,所以就没有写);itemBackground——是颜色,如果设置了就看不到水波纹的效果了(注意:这几个控件前面都是app:),如果你想设置BottomNagivationView的背景颜色可以用android:background=“  ”;

4、建立selectot_bnv.xml,我把它也单独放在一个文件夹(color)下面。

这个我觉得大家都能看懂吧,我的英语折磨差,当我看到checked就知道被点击到的颜色,当然下面就是没被点击到的到颜色

5、每次都是把最重要的步骤放在最后。现在我们开始写主Activity,这 是用来判断我们点击哪个该出现什么界面。先看代码:(代码有点长我就不截图了直接在上面写一些注释)

```

package com.example.jiangyou.fristapp;

import android.os.Bundle;

import android.support.annotation.NonNull;

import android.support.annotation.Nullable;

import android.support.design.widget.BottomNavigationView;

import android.support.v7.app.AppCompatActivity;

import android.view.MenuItem;

import android.widget.TextView;

public class BottomActivityextends AppCompatActivity {

TextView  mtextview;//初始化TextView

private BottomNavigationViewbotto  mNavigationView;

@Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.bottomactivity);//这里是因为我把activity名字换成bottomactivity

mtextview=(TextView)findViewById(R.id.text);//通过ID找到TextView

bottomNavigationView=(BottomNavigationView)findViewById(R.id.bottom_design);

BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);//这段代码是在网上找的,就是当item大于3的时候必须写这一段和下面一段,还有第六个步骤

bottomNavigationView.setOnNavigationItemSelectedListener(

new BottomNavigationView.OnNavigationItemSelectedListener() {//这是一个监听器(相当于大脑),就是监听我们点击哪个item,然后做出相对性的回应

@Override//以后看到这个标志就是下面一行代码是某个方法必须实现的,就是他主动填充的。

            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

switch (item.getItemId()){//相信这个switch大家都知道——Java基础

case R.id.add://通过item的ID来实现界面的转化

mtextview.setText(item.getTitle());//setText()设置文字,item.getTitle()得到item的Title里面的值其实这也是Java基础——哈哈哈哈。

break;

case R.id.first:

mtextview.setText(item.getTitle());

break;

case R.id.two:

mtextview.setText(item.getTitle());

break;

case R.id.three:

mtextview.setText(item.getTitle());

break;

case R.id.me:

mtextview.setText(item.getTitle());

break;

}

return true;//因为这个方法的返回时Boolean值,所以要要返回true或false,我个人觉得true就是可视化,如果你觉得我说的不对,我可以改一下这个博客。

}

});

}

}

```

6、网上找的代码:

```

package com.example.jiangyou.fristapp;

import android.annotation.SuppressLint;

import android.support.design.internal.BottomNavigationItemView;

import android.support.design.internal.BottomNavigationMenuView;

import android.support.design.widget.BottomNavigationView;

import android.util.Log;

import java.lang.reflect.Field;

public class BottomNavigationViewHelper {

@SuppressLint("RestrictedApi")

public static void disableShiftMode(BottomNavigationView view) {

BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);

try {

Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");

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.setShiftingMode(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);

}

}

}

```

相关文章

  • day03:BottomNagivationView基础

    今天说一下BottomNagivationView基础,先看一下效果图: BottomNagivationView...

  • Python Day5 基础

    Python基础 day03 运算符: not , and , or 语法: not x 作用: 将X进...

  • day03(if,switch,for,break,contin

    Day03(java基础知识)学习目标 【学习目标】理解、了解、应用、记忆通过今天的学习,参训学员能够:(解释的时...

  • Day03 - Python基础3

    Day03的课程要点记录详细教程地址:金角大王 - Day3 Python基础3 | 金角大王 - Day2 Py...

  • python 基础 day03 函数

    python 基础 day03 1.冒泡排序 2. 函数 一、集合(set) 特点:不允许有重复元素,如果添加重复...

  • js基础day03

    js基础day03 一.综合练习 1.换肤效果封装 封装原则:相同代码不动,不同的当作参数传递进来 封装本质:将重...

  • Python基础——day03

    Python基础——day3一. While循环while和if的用法基本类似,区别在于,if条件成立,则执行一...

  • Day03:基础补充

    1、@Scope("***"):描述spring是如何新建bean的 Singleton:单例共享 Prototy...

  • Android 基础day03

    Android基础第三天 1 Android下数据库创建 2 Android下数据库第一种方式增删改查 3 And...

  • css基础day03

    一、回顾行内元素与块级元素 1、行内元素: 行内元素不占有独立的区域,仅仅靠自身的字体大小和图像尺寸来支撑结构, ...

网友评论

  • 有点健忘:你这3个点不是英文的吗,咋代码都没包起来。。
    80b728bf255f:@有点健忘 这是是我刚开始写的时候,没有弄那个富文本样式不知道
  • 6035a326eca9:大神,抱大腿
  • cafeb584cdb3:酱油,508的智商和颜值担当:clap::clap:
  • fbdb21c540b5:真棒,大神求带
    80b728bf255f:@1528424058王永情 男人嘛,就得啥都会😂😂😂😂😂😂
  • IT人故事会:感谢,多谢,学习了。
    80b728bf255f:@IT人故事会 谢谢,我是初学者,一起加油

本文标题:day03:BottomNagivationView基础

本文链接:https://www.haomeiwen.com/subject/vkcerftx.html