Android利用系统原生BottomNavigationView实现底部导航
2024-08-27 08:55:24
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
android:background="#2488e2"
app:itemIconTint="@color/tab_icon"
app:itemTextColor="@color/tab_icon"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation"
/>
itemIconTint,
itemTextColor:分别代表选中和非选中状态下按钮图标和文字的颜色 在color下新建tab_icon.xml,
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorNormal" android:state_checked="false" />
<item android:color="@color/colorSelected" android:state_checked="true"/>
</selector>
menu:在menu下建一个xxmenu.xml ,每一个item代表一个底部标签
<item
android:id="@+id/navigation_1"
android:icon="@drawable/icon"
android:title="@string/tab_title" />
当底部item过多的时候点击会有一个偏移的现象????
解决方法:定义一个工具类
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) { } catch (IllegalAccessException e) { }
} }
最新文章
- UIButton
- paramiko模块
- PartialViewResult不鸟_ViewStart.cshtml
- Linux性能检测命令 - vmstat
- PHP相关图书推荐
- AngularJS 路由:ui-router
- 搭建Windows下Java Web开发环境
- ubuntu 包维护
- java学习之多线程
- Android Volley彻底解决(三),定制自己Request
- s3c2440的GPIO驱动
- HDU 2846 Trie查询
- Robot Framework + Pywinauto 框架实现Windows GUI Automation
- 【转载】FPGA算法映射要点
- Python程序的编写方式
- zip 与 unzip的简单使用
- Qt.常用代码整理
- WCF兼容WebAPI输出Json格式数据,从此WCF一举两得
- Linux下TCP/socket编程
- POJ2318(KB13-A 计算几何)