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

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

相关推荐
dancing9991 小时前
Android Studio中Gradle 7.0上下项目配置及镜像修改
android·ide·android studio
EQ-雪梨蛋花汤2 小时前
【Part 2安卓原生360°VR播放器开发实战】第四节|安卓VR播放器性能优化与设备适配
android·性能优化·vr
每次的天空2 小时前
Android学习总结之kotlin篇(二)
android·学习·kotlin
刘洋浪子2 小时前
Android Studio中Gradle中Task列表显示不全解决方案
android·ide·android studio
橙子199110162 小时前
Kotlin 中 infix 关键字的原理和使用场景
android·开发语言·kotlin
后端码匠9 小时前
MySQL 8.0安装(压缩包方式)
android·mysql·adb
梓仁沐白10 小时前
Android清单文件
android
董可伦13 小时前
Dinky 安装部署并配置提交 Flink Yarn 任务
android·adb·flink
每次的天空13 小时前
Android学习总结之Glide自定义三级缓存(面试篇)
android·学习·glide
恋猫de小郭13 小时前
如何查看项目是否支持最新 Android 16K Page Size 一文汇总
android·开发语言·javascript·kotlin