小编dan*_*jat的帖子

BottomNavigation BadgeDrawable 设置在特定区域设置中显示的数字,无论所选区域如何

该项目支持RTL;特别是阿拉伯语。\n要求是,即使语言选择为阿拉伯语区域设置,所有数字也必须以英语格式显示,在 TextView 的情况下,我们在任何地方实现它的方式通常是以下代码:

\n
TextView t = findViewById(R.id.sampleTV);\nt.setText(String.format("123",Locale.US));\n
Run Code Online (Sandbox Code Playgroud)\n

这里 123 将显示为“123”,因为我们在美国语言环境中将其格式化为硬编码,而不是“\xd9\xa1\xd9\xa2\xd9\xa3”

\n

我想对 Android Material 组件的底部导航提供的徽章通知实现相同的效果,这是我尝试过的:

\n
if(navigation!=null) {  \n  NumberFormat nf = NumberFormat.getInstance(Locale.US);\n\n  BadgeDrawable badgeDrawable = navigation.getOrCreateBadge(R.id.nav_account);\n  if (badgeDrawable != null) {\n      if((counterNoti + counter + counterRoom) <= 0) {\n      badgeDrawable.setVisible(false);\n      badgeDrawable.clearNumber();\n  }\n  else\n      {\n      int x = counterNoti + counter + counterRoom;\n      nf.format(x);\n      badgeDrawable.setVisible(true);\n      badgeDrawable.setNumber(x);\n  }\n}\n\n(where navigation is reference to my BottomNavigation!)\n
Run Code Online (Sandbox Code Playgroud)\n

但即便如此,数字仍以阿拉伯语显示,与 setText 的情况不同。有没有办法实现这一点或者我需要替代方案?

\n

感谢您的投入和时间!谢谢。

\n

android localization badge material-components-android android-bottomnavigationview

6
推荐指数
1
解决办法
772
查看次数