使用带参数的文本资源?

时间:2013-11-16 12:30:57

标签: c# android xamarin.android xamarin

我尝试在Xamarin Studio中使用格式化字符串作为资源来创建Android-App

这是我的Button XML的一部分:

<Button
        android:id="@+id/butAddStation"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/butAbout" />

这是资源:

<string name="butAbout">About {0}</string>
<string name="app_name">HVV Forrest</string>

我认为很容易看到,我试图实现的目标。按钮文字应为

string.format("About {0}","HVV Forrest");  // About HVV Forrest

实现这一目标的最优雅方式是什么。这可以通过字符串resouces或axml-File中的标记完全完成吗?

4 个答案:

答案 0 :(得分:1)

无法单独使用XML。

XML:

<string name="butAbout">About %1$s</string> 
<string name="app_name">HVV Forrest</string>

在代码中:

String.format(getString(R.string.butAbout), getString(R.string.app_name));

答案 1 :(得分:0)

@DroidBender指出了正确的方向。 Xamarin的语法仍然有点不同:

butAbout.Text = string.Format (GetString(@Resource.String.butAbout),GetString(@Resource.String.app_name);

非常感谢,朋友

答案 2 :(得分:0)

这对我有用:

dateDisplay.Text = Java.Lang.String.Format (this.GetString(Resource.String.time_selectedDate), date.ToString("d"));

string time = string.Format ("{0}:{1}", hour.ToString(), minute.ToString());
timeDisplay.Text = Java.Lang.String.Format (this.GetString(Resource.String.time_selectedTime), time);

对于以下字符串资源:

<string name="time_selectedDate" formatted="false">Date %1$s</string>
<string name="time_selectedTime" formatted="false">Time %1$s</string>

答案 3 :(得分:0)

String.Format无法正常工作,除非您指定它应该与Xamarin中的Java API一起使用。这样做的方法是使用global ::

以下应该可行,我测试了它:)

yourTextViewHere.Text = global::Java.Lang.String.Format(Resources.GetString(Resource.String.your_resource_from_string_file), "Your actual string.");