gpt4 book ai didi

android - 如何使用 MVVMCross 绑定(bind) TextStyle?

转载 作者:太空狗 更新时间:2023-10-29 13:21:58 27 4
gpt4 key购买 nike

我想在 Android 中使用 If-Else ValueCombiner 绑定(bind) TextView 的 TextStyle 属性。我尝试了以下方法,但未能创建绑定(bind):

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_gravity="center_vertical"
android:layout_row="0"
android:layout_column="1"
android:textSize="28dp"
android:gravity="left"
android:text="MyText"
local:MvxBind="TextStyle If(ShowBold, 'bold', 'normal')" />

我用 Text 属性测试了类似的绑定(bind)并且它工作正常,所以我猜它正在寻找字符串以外的东西?

最佳答案

有点晚了,但我有同样的要求,现在就做了。

在您的设置文件中添加以下内容(我有两个自定义绑定(bind)属性,StyleSummary):

protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
base.FillTargetFactories(registry);

registry.RegisterFactory(new MvxCustomBindingFactory<TextView>("Style", textView => new StyleTextViewBinding(textView)));
registry.RegisterFactory(new MvxCustomBindingFactory<TextView>("Summary", textView => new SummaryTextViewBinding(textView)));
}

在我的 TextView 中(我的自定义绑定(bind)显然是 StyleTextTextColor 是转换器):

<TextView
style="@style/TeamDifficulty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/dummy_title"
local:MvxBind="Text TeamDifficultyText(RowItem.DifficultyEnumCaptain1Int); TextColor TeamDifficultyTextColor(RowItem.DifficultyEnumCaptain1); Style RowItem.DifficultyEnumCaptain1;" />

实际代码(基本上它检查我的文本是否为空,如果是,它会将它加粗,因为我的转换器会在之后为其添加一个值):

public class StyleTextViewBinding : MvxAndroidTargetBinding
{
readonly TextView _textView;

public StyleTextViewBinding(TextView textView) : base(textView)
{
_textView = textView;
}

#region implemented abstract members of MvxConvertingTargetBinding
protected override void SetValueImpl(object target, object value)
{
_textView.SetTypeface(_textView.Typeface, Android.Graphics.TypefaceStyle.Bold);

if (value != null && Convert.ToBoolean(value))
_textView.SetTypeface(_textView.Typeface, Android.Graphics.TypefaceStyle.Normal);
}
#endregion

public override Type TargetType
{
get { return typeof(bool); }
}

public override MvxBindingMode DefaultMode
{
get { return MvxBindingMode.OneWay; }
}
}

希望这对您有所帮助!

关于android - 如何使用 MVVMCross 绑定(bind) TextStyle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27572586/

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