当前位置: 首页 > news >正文

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

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

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

问题解决之后:舒服多了

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

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

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

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

主要代码就是下面这个

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

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

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

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

http://www.lryc.cn/news/522195.html

相关文章:

  • 如何使用 `forEach` 遍历数组?
  • Go语言之路————条件控制:if、for、switch
  • OpenAI推出首个AI Agent!日常事项自动化处理!
  • Go语言的编程范式
  • 如何在 Rocky Linux 上安装极狐GitLab?
  • 数据库(MySQL)练习
  • Mac上安装Label Studio
  • 【airtest】自动化入门教程Poco元素定位
  • 【爬虫】某某查cookie逆向
  • 【进程与线程】进程的状态
  • 阻塞赋值和非阻塞赋值
  • Maven在Win10上的安装教程
  • 攻防世界_SQL注入
  • Ruby语言的数据结构
  • Jmeter配置服务代理器 Proxy(二)
  • Spring Boot 中实现 WebSocket 的方式
  • C语言初阶习题【29】杨氏矩阵
  • [操作系统] 深入理解操作系统的概念及定位
  • Java中对list数据进行手动分页(可直接复用版)
  • 【HarmonyOS NEXT】鸿蒙跳转华为应用市场目标APP下载页
  • 《研发管理 APQP 软件系统》——汽车电子行业的应用收益分析
  • 【IDEA 2024】学习笔记--文件选项卡
  • Android SystemUI——服务启动流程(二)
  • iOS - 内存对齐
  • 小游戏前端地区获取
  • AIGC时代:如何快速搞定Spring Boot+Vue全栈开发
  • MDX语言的多线程编程
  • Vue.js组件开发-实现输入框与筛选逻辑
  • 配置Allure环境变量【macOS版】
  • AndroidStudio升级到2024.2.2项目AGP升级8.8.0版本记录