我想知道是否有任何简单的方法可以基于
否,零和肯定使用Android中的复数资源机制?

我想要的答案是


如果getRemaining()如果getRemaining()== -1,则“ | getRemaining()|天前”
如果getRemaining()== 0,则“剩余getRemaining()天”
如果getRemaining()== 1,则“还有getRemaining()天”
如果getRemaining()> 1,则“还剩getRemaining()天”


现在我通过以下代码来实现

if (item.getRemaining() > -1) {
        holder.remainingTV.setText(res.getQuantityString(R.plurals.plural_remaining, item.getRemaining(),
            item.getRemaining()));
} else {
        holder.remainingTV.setText(res.getQuantityString(R.plurals.plural_ago, -item.getRemaining(), -item.getRemaining()));
}


我的资源看起来像这样

<plurals name="plural_remaining">
    <item quantity="one">%d Day Remaining</item>
    <item quantity="other">%d Days Remaining</item>
</plurals>

<plurals name="plural_ago">
    <item quantity="one">%d Day Ago</item>
    <item quantity="other">%d Days Ago</item>
</plurals>


我如何才能实现上述解决方案,而不必在android中基于-ve和+ ve数进行拆分?

最佳答案

您可以像这样(在Kotlin中)或Math.abs(在Java中)将数量的绝对值用于getQuantityString中:

getQuantityString(
   R.plurals.a_plural,
   quantityValue.absoluteValue,
   quantityValue
)


它会处理:-1、0、1和其他值

10-08 14:48