Android: Populate ScrollView with foreach



我的问题很简单:我有一个包含 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 次,因此工作正常。但滚动视图中仅显示第一个对象。我的错误在哪里?

谢谢!

您的 LinearLayout ln 默认使用 match_parent/match_parent 创建,因此只有 1 行占据全屏。如果你滚动它,你可以找到其余的。解决方案是为 LinearLayout ln 指定高度wrap_content。

最新更新