【问题标题】:How can I format a string when I use data binding?使用数据绑定时如何格式化字符串?
【发布时间】:2021-01-08 02:10:53
【问题描述】:

aDetailViewModel.sizeLivaData<Int>,代码A显示文件大小,效果很好。

我希望为 szie 显示一个单位,但代码 B 不起作用,我该如何解决?

代码 A

 <TextView
            android:id="@+id/tvFileSizeValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/myDetailContent"
            android:text="@{String.valueOf(aDetailViewModel.size)}" />

代码 B

 <TextView
                android:id="@+id/tvFileSizeValue"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/myDetailContent"
                android:text="@{String.valueOf(aDetailViewModel.size)+ "Kb"}" />

添加内容

谢谢!

下面的代码可以正常运行。

但是还有更简单的方法吗?

<string name="formatSizeToString">%1d KB</string>   

android:text="@{@string/formatSizeToString(aDetailViewModel.aMVoiceForEdit.size)}"

【问题讨论】:

    标签: android-studio kotlin


    【解决方案1】:

    您可以使用静态函数并在您的 xml 中调用它。例如在文件中 StringFormatter.kt

    fun formatString(size: Int): String {
       return "$size kb"
    }
    

    然后在你的xml中你可以导入它

    <layout>
    <data>
       <import type="com.path.to.the.package.StringFormatter" />
        // your viewmodel variable here
        // etc
    </data>
    <TextView
                    android:id="@+id/tvFileSizeValue"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    style="@style/myDetailContent"
                    android:text="@{StringFormatter.formatString(aDetailViewModel.size)}" />
    
    </layout>
    

    【讨论】:

    • 谢谢!有没有更简单的方法?
    • 我不确定有没有更简单的方法
    • 谢谢!请您看看我在问题中添加的内容吗?
    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2021-12-05
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多