ale*_*pfx 3 android android-resources android-databinding
我的TextView应用程序中有一些由strings.xml资源文件中的键和动态传递的参数组合而成。我使用 Android Data Binding 其中的 '??' 表示法意味着它应该用空白字符串替换空值,如下例所示。但是当参数值为空直到TextView数据满载时,我们会看到类似“null min”的东西,而我喜欢它是:“min”。
<TextView
android:id="@+id/text_runtime"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="2dp"
android:text="@{@string/min(vm.runtime) ?? ``}"
tools:text="120 min" />
Run Code Online (Sandbox Code Playgroud)
在strings.xml:
<string name="min">
<xliff:g id="min">%d</xliff:g>
min
</string>
Run Code Online (Sandbox Code Playgroud)
该vm.runtime可以为null,但是这可能是一个字符串格式的有效参数,因此它被认为是有效的,??永远不会被评估。
您可以使用的一种表达方式是:
<TextView
android:id="@+id/text_runtime"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="2dp"
android:text="@{vm.runtime == null ? `` : @string/min(vm.runtime)}"
tools:text="120 min" />
Run Code Online (Sandbox Code Playgroud)
如果您希望它具有min而不是空字符串,您可以将字符串格式化两次。
<TextView
android:id="@+id/text_runtime"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="2dp"
android:text="@{@string/min(@string/quantity(vm.runtime) ?? ``)}"
tools:text="120 min" />
Run Code Online (Sandbox Code Playgroud)
你的 min 定义如下:
<string name="min">
<xliff:g id="min">%s</xliff:g>
min
</string>
Run Code Online (Sandbox Code Playgroud)
数量字符串很简单:
<string name="quantity">%d</string>
Run Code Online (Sandbox Code Playgroud)
我认为这应该在所有语言中都正确格式化,但如果您打算本地化,我建议您使用复数而不是字符串来表示 min。
| 归档时间: |
|
| 查看次数: |
4009 次 |
| 最近记录: |