我的目标是显示“1 星”“2.5 星”“3 星”等文本。
对于 1.0、2.0 等浮点值,删除
但对于 .0
。.5
的值显示浮点值 2.5 3.5 等
这可以使用 android plurals
吗?
我用过这个方法,但是不行。 plurals.xml
<plurals name="hotel_card_rating_text">
<item quantity="zero">@string/text_zero</item>
<item quantity="one">@string/text_one</item>
<item quantity="two">@string/text_two</item>
<item quantity="few">@string/text_few</item>
<item quantity="many">@string/text_many</item>
<item quantity="other">@string/text_other</item>
</plurals>
strings.xml
<resources>
<string name="text_zero">%.1f stars</string>
<string name="text_one">1 star</string>
<string name="text_two">%.1f stars</string>
<string name="text_few">%.1f stars</string>
<string name="text_many">%.1f stars</string>
<string name="text_other">%.1f stars</string>
</resources>
测试代码
DecimalFormat format = new DecimalFormat();
float rating = getRating();
getStarText().setText(getContext().getResources().getQuantityString(R.plurals.hotel_card_rating_text, (int) rating, format.format(rating)));
}
最佳答案
strings.xml使用%s
而不是%.1f
<resources>
<string name="text_zero">%s stars</string>
<string name="text_one">1 star</string>
<string name="text_two">%s stars</string>
<string name="text_few">%s stars</string>
<string name="text_many">%s stars</string>
<string name="text_other">%s stars</string>
</resources>
测试代码
DecimalFormat format = new DecimalFormat("#.#"); // format the number
float rating = getRating();
getContext().getResources()
.getQuantityString(R.plurals.hotel_card_rating_text, (int) rating, format.format(rating)));
使用复数时要小心。它有自己的问题,请参见下文:
关于Android 以整数和浮点形式显示复数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695378/