多个MvxBindableListView在一个布局中?

时间:2013-01-09 14:43:42

标签: android xamarin.android mvvmcross

我一直在尝试在我的布局中放置3个MvxBindableListView小部件但没有成功。 有没有办法做到这一点,以便每个MvxBindableListView完全显示没有内部滚动和我的“页面”可滚动。 这是布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res/MyCurrentProject.Client.UI"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp">
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            local:MvxBind="{}" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            local:MvxBind="{}" />
        <Mvx.MvxBindableListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:clickable="false"
            local:MvxBind="{}" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            local:MvxBind="{}" />
        <Mvx.MvxBindableListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:clickable="false"
            local:MvxBind="{}" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            local:MvxBind="{}" />
        <Mvx.MvxBindableListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:clickable="false"
            local:MvxBind="{}" />
    </LinearLayout>
</LinearLayout>

在这里绑空,但完全正常工作。列表具有可变数量的元素,因此无法固定高度......

提前致谢!

2 个答案:

答案 0 :(得分:2)

查看MvxBindableLinearLayout - 但如果您完整地显示一个或多个长列表,显然可以考虑使用大量额外资源(内存,图形对象等)。

答案 1 :(得分:1)

您可以使用技巧让您的列表增长,然后将它们放在滚动视图中。请参阅下面的代码。您将以与常规MvxBindableListView相同的方式使用它。

public class BindableExpandableHeightListView : MvxBindableListView
{
   public BindableExpandableHeightListView(Context context, IAttributeSet attrs) : base(context, attrs) { }

   public BindableExpandableHeightListView(Context context, IAttributeSet attrs, MvxBindableListAdapter adapter) : base(context, attrs, adapter) { }

   private bool _isExpanded = true;

    protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
    {
        if (_isExpanded)
        {
            int expandSpec = MeasureSpec.MakeMeasureSpec(int.MaxValue >> 2, MeasureSpecMode.AtMost);
            base.OnMeasure(widthMeasureSpec, expandSpec);

            ViewGroup.LayoutParams layoutParams = LayoutParameters;
            layoutParams.Height = MeasuredHeight;
        }
        else
        {
            base.OnMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    }

}