textView和XML声明中有多个变量



如果这是一个简单的问题,我事先道歉,但我找不到相关的问题。

我想做的事:

假设我有一个字符串:我的名字是-variable,我是-variable-岁。我的生活是多变的。

如何在XML上声明这一点?

如有更多关于本主题的阅读指南和指示,我们将不胜感激。

非常感谢,提前

您可以在字符串中使用xliff注释。

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string id="foo">
      My name is <xliff:g id="name" example="Andy Droid">%s</xliff:g> and I am <xliff:g id="age" example="5">%d</xliff:g> years old. I live in <xliff:g id="city" example="Paris">%s</xliff:g>. blabla
    </string>
</resources>

以及您在android:text="@string/foo" 布局中的参考

安卓工作室将很好地显示

我的名字叫(Andy Droid),今年5岁。我住在(巴黎)。blabla

当然,你还需要一个代码替换

final TextView tv = (TextView) findViewById(R.id.bar);
String name = ...;
int age = ...;
String city = ...;
tv.setText(getString(R.string.foo, name, age, city));

您可以添加此字符串

<string name="example">My name is %s and I am %d years old. I live %s bla bla bla</string>

在您的strings.xml文件中。

在你的代码中:

TextView tv = (TextView) findViewById(R.id.tv1);
String name = "";
int age = 0;
String city = "";
tv.setText(String.format(getString(R.id.example),name,age,city));
编辑:好的,对不起,这显然是不好的做法。它将工作,但我相信有更好的解决方案。我只是还没有做过这样的事。

听起来好像您想要以编程方式设置字符串。可能有一个更优雅的解决方案,但您可能必须单独存储每个字符串,然后将它们组合到代码中。

<string name="my_name_is">My name is </string>
<string name="and_i_am"> and I am </string>
<string name="years_old"> years old.</string>

在你的代码中

String name = "Bill";
String age = "12";
String str = getString(R.id.my_name_is) + name + getString(R.id.and_i_am) + age 
    + getString(R.id._years_old);

输出:"我叫比尔,今年12岁。"

这个答案展示了如何在xml中从另一个字符串引用一个字符串,但我不认为这是您想要的。

最新更新