kir*_*403 5 format android string-formatting number-formatting
我有一个货币符号String和金额double.直到现在我显示的数量是这样的:
amount.setText(currency + " " + amount);
Run Code Online (Sandbox Code Playgroud)
在某些地方,我有2 TextView秒显示数量与之间的填充:
currency.setText(currency);
amount.setText(amount);
Run Code Online (Sandbox Code Playgroud)
哪个好.但是,我正在将此代码移动到具有android数据绑定的布局文件中,是否有一种简单的方法来格式化并显示android中的金额?
比如symbol[space]amount ,如果存在,则应使用2个小数点格式化数量,否则为整数.例如,100将显示为100,而不是100.00,但123.2将显示为123.20以及货币符号($ 123.20,$ 100).
我知道有几种方法(资源字符串格式,NumberFormat)我可以做到(我还没有使用它们,只听说过它们),但是最简单,最干净的方法是什么?
我试图找到并将所有2个文本视图转换为单个视图,并找到格式化和显示数量的统一方式.
谢谢.
受到@Nowshad 的回答的启发,我可以在没有带有数据绑定库的外部库的情况下做到这一点。
需要时在布局文件中提供货币和金额:
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:amount="@{amount}"
app:currency="@{currency}" />
Run Code Online (Sandbox Code Playgroud)
并提供一个绑定适配器:
@BindingAdapter({"currency", "amount"})
public static void setCurrencyAndAmount(TextView textView, String currency, double amount) {
SpannableString spannableString = new SpannableString(currency + " " +
new DecimalFormat("#.##").format(amount));
spannableString.setSpan(new RelativeSizeSpan(0.6f), 0, 1, 0);
textView.setText(spannableString);
}
Run Code Online (Sandbox Code Playgroud)
简单高效。