【问题标题】:Multiple MvxBindableListView's in a single layout?单个布局中有多个 MvxBindableListView?
【发布时间】:2013-01-09 14:43:41
【问题描述】:

我一直试图在我的布局中放置 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>

此处绑定为空,但可以正常工作。列表具有可变数量的元素,因此固定高度是不可能的......

提前致谢!

【问题讨论】:

    标签: android xamarin.android mvvmcross


    【解决方案1】:

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

    【讨论】:

    • 有没有办法将 MvxBindableListViews 的高度设置为列表的完整大小,这样它们就不会滚动并且我可以使用 ScollView?
    • 我试过了,它将列表的高度设置为 1 个列表项的高度...并且列表仍然可以滚动... :(
    • 您必须为此使用 MvxBindableLinearLayout 并将其高度设置为 wrap_content - 请参阅其他提到 LinearLayout 的问题,例如 stackoverflow.com/questions/12914544/…stackoverflow.com/questions/13075521/…
    • 谢谢 Stuart,MvxBindableLinearLayout 确实成功了!我点击了您在之前评论中发布的链接,现在一切正常! :)
    【解决方案2】:

    您可以使用一个技巧让您的列表增长,然后将它们放置在滚动视图中。请参阅下面的代码。您可以像使用常规 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);
            }
        }
    
    }
    

    【讨论】:

    • 谢谢 Alexey,但我最终使用了 Stuart 的方法... ;)
    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多