在XML布局android中使用带有占位符的字符串

x759pob2  于 2023-03-11  发布在  Android
关注(0)|答案(3)|浏览(315)

我有一个带占位符的字符串,例如

<string name="str_1">Hello %s</string>

我想在xml布局中使用这个作为android:text="@string/str_1”.有什么方法可以在xml布局中使用这个来填充占位符吗?提前感谢。我已经知道java/Kotlin中的String.format(str,str...),但我想在xml布局中使用这个,而不需要数据绑定。

ljo96ir5

ljo96ir51#

你可以这样做。在你的(strings.xml)中写你的字符串,在里面声明一个字符串变量(%1$s)。对于decimal,我们使用(%2$d)。

<string name="my_string">My string name is %1$s</string>

在android代码(yourFile.java)中,在需要的地方使用这个字符串。

String.format(getResources().getString(R.string.my_string), stringName);

这不是一个好的答案,但它可能会帮助你得到一些想法开始。
谢谢。

093gszye

093gszye2#

直接在XML中格式化字符串是不可能的,在代码中可以同时使用String.formatcontext.getString()来获取字符串并格式化。
如果您希望只在XML中显示某些内容,而不在最终构建中显示(只在编译时显示),您还可以使用tools:命名空间,如下所示:

<TextView 
...

    tools:text="Hello, this is a test"

/>

这只会出现在布局编辑器中,不会对APK产生任何影响。它也可以用于其他字段,如tools:visiblity

5gfr0r5j

5gfr0r5j3#

至少有两种方法可以在布局表达式中设置字符串格式:

android:text="@{String.format(@string/str_1, viewModel.username)}"

android:text="@{@string/str_1(viewModel.username)}"

相关问题