MVVMCross-MvxGridView没有包装内容高度

时间:2018-06-28 14:01:38

标签: android gridview mvvmcross

我正在使用Xamarin和MVVM Cross开发Android应用。而且我正在尝试将两个标签列表加载到MvxGridView。

Control_List.axml

<?xml version="1.0" encoding="utf-8"?>
<MvxLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<MvxGridView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:numColumns="auto_fit"
    android:verticalSpacing="5dp"
    android:horizontalSpacing="5dp"
    android:stretchMode="columnWidth"
    android:choiceMode="none"
    local:MvxBind="ItemsSource List"
    local:MvxItemTemplate="@layout/list_item" />
</MvxLinearLayout>

还有List_item.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:gravity="center_vertical">
<TextView
    android:background="@drawable/roundedshape_calendar_blurb"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="16dp"
    android:textColor="@color/white"
    android:singleLine="false"
    local:MvxBind="Text Format('{0}: {1}', Key, Value)" />
<View
    android:layout_width="1dp"
    android:layout_height="36dp"
    local:MvxBind="BackgroundColor DarkerThemeColor" />
</LinearLayout>

视图如下:

MvxGriView layout

我的问题是:为什么只显示一行?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我为此挣扎了一段时间。

通过动态更改网格高度,我找到了一个简单的解决方案:

        var myGrid = _rootView.FindViewById<MvxGridView>(Resource.Id.grid);
        ViewGroup.LayoutParams layoutParams = myGrid .LayoutParameters;
        layoutParams.Height = (ViewModel.Items.Count / myGrid .NumColumns) * _gridRowHeight;
        myGrid.LayoutParameters = layoutParams;