Android:使用foreach填充ScrollView

时间:2018-10-04 09:40:42

标签: android xamarin scrollview

我的问题很简单:我有一个包含5个对象的列表,我想在滚动视图中显示它们。我这样做是这样的:

    private void PopulateScrollView(List<string> content)
    {
        LinearLayout root = (LinearLayout)FindViewById(Resource.Id.scrollview);

        foreach(string obj in content)
        {
            LinearLayout ln = new LinearLayout(this);
            TextView txt = new TextView(this);
            txt.Text = obj;
            txt.TextSize = 20;
            txt.Click += delegate
            {
                Android.Net.Uri uri2 = Android.Net.Uri.Parse(obj);
                mediaPlayer = MediaPlayer.Create(this, uri2);
                mediaPlayer.Start();
            };

            ln.AddView(txt);
            root.AddView(ln);

        }
    }

我的XML:

<LinearLayout
    android:orientation="horizontal"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_weight="80"
    android:layout_height="0dp">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:orientation="horizontal"
            android:id="@+id/scrollview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </ScrollView>
</LinearLayout>

现在,问题如下:我的应用程序不再显示5个对象,而是仅显示第一个对象,然后点燃其他对象。我知道我的列表正在调试器中运行:它包含所有对象。该循环执行了5次,因此工作也很好。但是在滚动视图中只有第一个对象可见。我的错误在哪里?

谢谢!

1 个答案:

答案 0 :(得分:-1)

默认情况下,您的LinearLayout ln是使用match_parent / match_parent创建的,因此只有1行占据了整个屏幕。如果滚动它,可以找到其余的。解决方案是在LinearLayout ln中指定wrap_content的高度。