我正在开发一个包含ListView的应用程序。 ListView上的项目应位于屏幕的左侧或右侧,具体取决于项目的内容。所以我创建了一个转换器来检查项目并设置LinearLayout重力。 正在调用转换器并且它正确地向右或向右返回"但是没有设置LinearLayout。线性布局如下:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="#FFFFFF"
local:MvxBind="Gravity Content, Converter=MessageAlign">
转换器我尝试了两种不同的方式,一种使用GravityFlags和其他字符串:
public class MessageAlignConverter : MvxValueConverter<string, GravityFlags>
{
protected override GravityFlags Convert(string value, Type targetType, object parameter, CultureInfo culture)
{
if (My Test)
{
return GravityFlags.Right;
}
return GravityFlags.Left;
}
}
public class MessageAlignConverter : MvxValueConverter<string, string>
{
protected override string Convert(string value, Type targetType, object parameter, CultureInfo culture)
{
if (My Test)
{
return "right";
}
return "left";
}
}
他们都没有工作,所以我检查了LinkerPleaseInclude。 我尝试添加LinkerPleaseInclude但我无法获得当前的重力,对于一个按钮(例如)我会这样做:
public void Include(Button button)
{
button.Click += (s,e) => button.Text = button.Text + "";
}
所以我为LinearLayout设想了类似的东西:
public void Include(LinearLayout linearLayout)
{
linearLayout.SetGravity(linearLayout.Gravity?);
}
关于如何做到这一点的任何想法?
忘记提及输出:
MvxBind:Warning: 6.00 Failed to create target binding for binding Gravity for Content
[0:] MvxBind:Warning: 6.00 Failed to create target binding for binding Gravity for Content
10-26 15:43:51.796 I/mono-stdout(11936): MvxBind:Warning: 6.00 Failed to create target binding for binding Gravity for Content
谢谢!
答案 0 :(得分:2)
首先,我认为您应该使用值转换器的第一个版本(返回GravityFlags的那个)
其次,在应用程序输出中,您是否看到任何调试文本说它无法绑定到内容?如果你没有,那么就没有理由考虑LinkerPleaseInclude。
第三,您没有展示如何在AXML中定义ListView,因此请确保您不会遇到任何UI问题。如果您将android:gravity重新绑定为值来替换Mvx.Bind绑定,该项是否正确显示?
编辑: 使用定义自己的绑定来设置Gravity: In MvvmCross how do I do custom bind properties