LinearLayout Gravity的Droid ValueConverter

时间:2014-10-24 22:37:20

标签: android mvvmcross

我正在开发一个包含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

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,我认为您应该使用值转换器的第一个版本(返回GravityFlags的那个)

其次,在应用程序输出中,您是否看到任何调试文本说它无法绑定到内容?如果你没有,那么就没有理由考虑LinkerPleaseInclude。

第三,您没有展示如何在AXML中定义ListView,因此请确保您不会遇到任何UI问题。如果您将android:gravity重新绑定为值来替换Mvx.Bind绑定,该项是否正确显示?

编辑: 使用定义自己的绑定来设置Gravity: In MvvmCross how do I do custom bind properties