2018-04-02ButtomNavigationView去掉默认的切换效果

package com.cup.tianjin;

import android.annotation.SuppressLint;

import android.os.Bundle;

import android.support.annotation.NonNull;

import android.support.design.internal.BottomNavigationItemView;

import android.support.design.internal.BottomNavigationMenuView;

import android.support.design.widget.BottomNavigationView;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.MenuItem;

import android.widget.TextView;

import java.lang.reflect.Field;

public class MainActivityextends AppCompatActivity {

private TextViewmTextMessage;

private BottomNavigationView.OnNavigationItemSelectedListenermOnNavigationItemSelectedListener

            =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;

case R.id.navigation_home1:

mTextMessage.setText(R.string.title_home);

return true;

}

return false;

}

};

@Override

    protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mTextMessage = (TextView) findViewById(R.id.message);

BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);

disableShiftMode(navigation);

navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

}


//下面这个方法是利用反射机制去掉默认的切换效果的

@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);

item.setShiftingMode(false);

item.setChecked(item.getItemData().isChecked());

}

}catch (NoSuchFieldException e) {

e.printStackTrace();

}catch (IllegalAccessException e) {

e.printStackTrace();

}

}

}

你可能感兴趣的:(2018-04-02ButtomNavigationView去掉默认的切换效果)