我有一个带占位符的字符串,例如
<string name="str_1">Hello %s</string>
我想在xml布局中使用这个作为android:text="@string/str_1”.有什么方法可以在xml布局中使用这个来填充占位符吗?提前感谢。我已经知道java/Kotlin中的String.format(str,str...),但我想在xml布局中使用这个,而不需要数据绑定。
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);
这不是一个好的答案,但它可能会帮助你得到一些想法开始。谢谢。
093gszye2#
直接在XML中格式化字符串是不可能的,在代码中可以同时使用String.format和context.getString()来获取字符串并格式化。如果您希望只在XML中显示某些内容,而不在最终构建中显示(只在编译时显示),您还可以使用tools:命名空间,如下所示:
String.format
context.getString()
tools:
<TextView ... tools:text="Hello, this is a test" />
这只会出现在布局编辑器中,不会对APK产生任何影响。它也可以用于其他字段,如tools:visiblity。
tools:visiblity
5gfr0r5j3#
至少有两种方法可以在布局表达式中设置字符串格式:
android:text="@{String.format(@string/str_1, viewModel.username)}"
或
android:text="@{@string/str_1(viewModel.username)}"
3条答案
按热度按时间ljo96ir51#
你可以这样做。在你的(strings.xml)中写你的字符串,在里面声明一个字符串变量(%1$s)。对于decimal,我们使用(%2$d)。
在android代码(yourFile.java)中,在需要的地方使用这个字符串。
这不是一个好的答案,但它可能会帮助你得到一些想法开始。
谢谢。
093gszye2#
直接在XML中格式化字符串是不可能的,在代码中可以同时使用
String.format
和context.getString()
来获取字符串并格式化。如果您希望只在XML中显示某些内容,而不在最终构建中显示(只在编译时显示),您还可以使用
tools:
命名空间,如下所示:这只会出现在布局编辑器中,不会对APK产生任何影响。它也可以用于其他字段,如
tools:visiblity
。5gfr0r5j3#
至少有两种方法可以在布局表达式中设置字符串格式:
或