android - 如何使用数据绑定(bind)将来自资源的字符串与 XML 中的动态变量结合起来?

标签 android android-databinding

我有一个 TextView,它有一个硬编码的字符串,我有一个动态变量,我想把它放在这个字符串的末尾。这是我的代码:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp">
    <TextView
        android:id="@+id/PeopleName"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/Generic_Text"+"@{ Profile.name }" />


</LinearLayout>

我遇到了 android:text="@string/Generic_Text"+"@{ Profile.name }" 的问题。 Generic_Text 声明“我的名字是”,然后 Profile.name 是动态的,并且从配置文件到配置文件显然会发生变化。我希望整个 TextView 输出是 My Name is {Profile.name}。任何帮助都会很棒。

最佳答案

你可以更简单地做到这一点:

android:text= "@{@string/generic_text(profile.name)}"

你的字符串应该是这样的:

<string name="generic_text">My Name is %s</string>

编辑:

  1. 当然,您可以根据需要使用任意数量的变量:

    android:text= "@{@string/generic_text(profile.firstName, profile.secondName)}"
    
    <string name="generic_text">My Name is %1$s %2$s</string>
    
  2. 它之所以有效,是因为它是在数据绑定(bind)中设计的。更多文档:https://developer.android.com/topic/libraries/data-binding/expressions#resources

关于android - 如何使用数据绑定(bind)将来自资源的字符串与 XML 中的动态变量结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38978499/

相关文章:

android - Kotlin + 数据绑定(bind)在输入 '??' 处没有可行的替代方案

android - 如何让xml中的 `onClick()`调用两个方法?

java - 单击按钮时无法打开 fragment

java - android studio,如何保存,更改数据

android - RecyclerView Item Click Listener 与 DataBinding

android - 如何使用数据绑定(bind)调用静态方法?

android - SeekBar DataBinding 表达式上的资源 NotFoundException

java - 格式化 Java 字符串

android - 应用程序 :mergeDebugResources error in Android Studio after upgrade

android - 在 Android 上的 RxJava2 中结合 Singles 的最佳方式?