如何在TextView中显示格式化的金额?

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个文本视图转换为单个视图,并找到格式化和显示数量的统一方式.

谢谢.

kir*_*403 5

受到@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)

简单高效。