【发布时间】:2016-10-07 01:39:48
【问题描述】:
我有一个看起来像这样的 ViewModel:
public class OrderViewModel {
double price = 23748.89;
}
以及我将 OrderViewModel 绑定到的布局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="order"
type="com.example.viewmodel.OrderViewModel"/>
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{@string/price_format(order.price)}"/>
</LinearLayout>
</layout>
使用的格式化字符串如下所示:
<string name="price_format">%+.2f $</string>
很好地添加了$ 符号并将浮点表示减少到小数点后两位。
结果看起来像
1234.89
现在我想用逗号替换小数点并添加千位分隔符,使我的价格看起来像
1.234,89
我可以仅使用我的 XML 格式化字符串来执行此操作,还是必须在 java 代码(我的 ViewModel)中进行格式化?
【问题讨论】:
-
你能用
%,.2f $替换你的格式字符串然后再试一次吗?希望会奏效。 -
@kha 谢谢,这增加了千位分隔符,但反过来,逗号作为千位分隔符,冒号作为小数分隔符。
-
@kha 您的第一个建议确实有效,因为设备已将其语言环境设置为德语(也可能是其他欧洲语言环境)。然后根据德语 1.234,89 的语言环境进行格式化。如果您将此(包括语言环境问题)作为答案,我会接受。
标签: android android-resources number-formatting android-databinding