如何在安卓中用复数资源表示负数

  • 本文关键字:资源 表示 android xml plural
  • 更新时间 :
  • 英文 :


我想知道是否有任何简单的方法可以根据 负、零和正在安卓中使用复数资源机制?

我想要的答案是

  • 如果 getRemaining() <-1 则 "|getRemaining()|几天前">
  • 如果 getRemaining() == -1 则 "|getRemaining()|一天前"
  • 如果 getRemaining() == 0 则 "getRemaining() 剩余天数"
  • 如果 getRemaining() == 1 则 "getRemaining() day remaining"
  • 如果 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 数字拆分它们?

您可以将数量的绝对值用于getQuantityString,如下所示(在Kotlin中)或Math.abs(在Java中):

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

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

最新更新