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

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

相关推荐
CYRUS_STUDIO14 小时前
利用 Linux 信号机制(SIGTRAP)实现 Android 下的反调试
android·安全·逆向
CYRUS_STUDIO14 小时前
Android 反调试攻防实战:多重检测手段解析与内核级绕过方案
android·操作系统·逆向
黄林晴18 小时前
如何判断手机是否是纯血鸿蒙系统
android
火柴就是我18 小时前
flutter 之真手势冲突处理
android·flutter
法的空间18 小时前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
循环不息优化不止18 小时前
深入解析安卓 Handle 机制
android
恋猫de小郭19 小时前
Android 将强制应用使用主题图标,你怎么看?
android·前端·flutter
jctech19 小时前
这才是2025年的插件化!ComboLite 2.0:为Compose开发者带来极致“爽”感
android·开源
用户20187928316719 小时前
为何Handler的postDelayed不适合精准定时任务?
android
叽哥19 小时前
Kotlin学习第 8 课:Kotlin 进阶特性:简化代码与提升效率
android·java·kotlin