Android BottomNavigationView不加icon使text垂直居中,完美解决。

这个问题网上千篇一律的设置iconsize为0,labale固定什么的,都没有效果。我的这个基本上所有人用都会有效果。

问题解决之前的效果:垂直方向,文本不居中,看着很难受

问题解决之后:舒服多了

其实很简单,三行代码就解决了,思路就是获取item的paddingtop和paddingbottom,相加除以2,再设置paddingbottom就可以了

个人习惯,解决问题就给出完整的实现方案。

我用的menu来定义每个item信息,就像下面这样

XML 复制代码
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/nav_square"
        android:title="@string/square" />
    <item
        android:id="@+id/nav_friends"
        android:title="@string/friends" />
    <item
        android:id="@+id/nav_release"
        android:title="@string/release" />
    <item
        android:id="@+id/nav_messages"
        android:title="@string/message" />
    <item
        android:id="@+id/nav_profile"
        android:title="@string/profile" />
</menu> 

主要代码就是下面这个

java 复制代码
int paddingTop = mViewBind.navigationView.getItemPaddingTop();
int paddingBottom = mViewBind.navigationView.getItemPaddingBottom();
mViewBind.navigationView.setItemPaddingBottom(DisplayUtil.dp2px(this, (float) (paddingBottom + paddingTop) / 2));

其中DisplayUtils就是一个dp和px的转换工具,大家随便都能搜出来,我这里直接贴上

java 复制代码
public static int px2dp(Context context, float px) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (px / scale + 0.5f);
}


public static int dp2px(Context context, float dp) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (dp * scale + 0.5f);
}

至此问题完美解决。原创不易,给个点赞

相关推荐
爱笑鱼38 分钟前
Binder(八):远端进程死了,BinderProxy 为什么还能收到通知?
android
zhangphil1 小时前
Android ContentProvider/ContentResolver读图片,跨进程 IPC慢
android
yueqc11 小时前
Android .so 文件压缩
android·so·包体积
龚礼鹏2 小时前
深入解析 Android Automotive (AAOS) 启动流程与 CarService 核心机制(基于 Android 16 最新源码视角)
android
rosmis2 小时前
agent各指标定义
android·java·开发语言
风样滴男人哟3 小时前
PHP特性之反射类ReflectionClass机制
android·开发语言·php
小孔龙4 小时前
RenderNode 与 DisplayList:Android 硬件加速的绘制记录与复用
android·性能优化
qizayaoshuap5 小时前
鸿蒙 ArkTS 实战:搜索列表 城市实时过滤(示例 94)
android·华为·harmonyos
朝星5 小时前
Framework筑基之Handler消息机制5(应用层)
android
2601_965798475 小时前
ForumLab Review: Fast PHP Script for SEO Forum Sites
android·adb·php