我在我的项目中实现了来自 Design Support Library 25 的底部导航 View 。我在 View 中有 5 个图标。 whenever an icon is selected it's having some animation.但是当 3 个或更少的图标没有显示任何动画时。我想删除那个动画,只需要对图标进行一些颜色更改。我怎样才能做到这一点?做了足够的谷歌搜索,但找不到解决方案。请帮忙。谢谢。
最佳答案
从 thread 得到答案.
移除动画或切换模式。
BottomNavigationView
的实现有条件:当超过3个item时使用shift模式。
Create helper class
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 {
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);
}
}
}
Usage
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_bar);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
关于android - 如何在android中删除底部导航 View 的图标动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41649494/