项目支持RTL;尤其是阿拉伯语。要求是所有数字都必须以英文格式出现,即使语言选择为阿拉伯语区域设置,我们在任何地方实现它的方式通常是在 TextViews 的情况下使用以下代码:
TextView t = findViewById(R.id.sampleTV);
t.setText(String.format("123",Locale.US));
此处 123 将显示为“123”,因为我们在美国语言环境中将其格式化为硬编码而不是“١٢٣”
我想为 Android Material 组件的底部导航提供的徽章通知实现相同的功能,这是我尝试过的:
if(navigation!=null) {
NumberFormat nf = NumberFormat.getInstance(Locale.US);
BadgeDrawable badgeDrawable = navigation.getOrCreateBadge(R.id.nav_account);
if (badgeDrawable != null) {
if((counterNoti + counter + counterRoom) <= 0) {
badgeDrawable.setVisible(false);
badgeDrawable.clearNumber();
}
else
{
int x = counterNoti + counter + counterRoom;
nf.format(x);
badgeDrawable.setVisible(true);
badgeDrawable.setNumber(x);
}
}
(where navigation is reference to my BottomNavigation!)
然而,即使这样,数字也以阿拉伯语显示,不像 setText 的情况。有没有办法实现这一点,或者我需要一个替代方案?
感谢您的投入和时间!谢谢。