gpt4 book ai didi

xamarin - 将 Android 可翻译字符串传递给 ValueConverter

转载 作者:行者123 更新时间:2023-12-04 21:40:24 26 4
gpt4 key购买 nike

我正在尝试将 @string/something 传递给一个值转换器,以便我可以使用它来格式化输出,假设我有一个 DateTime 值,我想将类似 "Signup Date: {0}" 的内容传递给 ValueConverter。

问题是,上面的文本是可翻译的,所以它来自任何给定语言的 strings.xml 文件。到目前为止,我试过这个:

<TextView
local:MvxBind="Text SignupDate, Converter=FriendlyDate, ConverterParameter=@string/release_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="5"
android:paddingTop="8dp"
style="@style/WhiteParagraphText" />

注意 ConverterParameter=@string/release_date。我该怎么做?

最佳答案

您可以使用一个值转换器来完成此操作,该转换器将字符串 资源名称 作为参数,在资源中查找它的 ID,并通过该 ID 从资源中获取值。

public class FriendlyDateValueConverter : MvxValueConverter<DateTime, string>
{
protected override string Convert(DateTime value, Type targetType, object parameter, CultureInfo culture)
{
var param = parameter as string;
if (string.IsNullOrEmpty(param))
{
return string.Empty;
}

var globals = MvvmCross.Platform.Mvx.Resolve<IMvxAndroidGlobals>();
var res = globals.ApplicationContext.Resources;
var id = res.GetIdentifier(param, "string", globals.ApplicationContext.PackageName);
// id=0, if the resource could not be found -> add some error handling

var format = res.GetString(id);
return string.Format(format, value);
}
}

用法

<TextView 
local:MvxBind="Text SignupDate, Converter=FriendlyDate, ConverterParameter='release_date'"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="5"
android:paddingTop="8dp" />

注意:传递 'release_date' 而不是 @string/release_date 作为参数。

关于xamarin - 将 Android 可翻译字符串传递给 ValueConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36241862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com