1

我有以下内容: - 带有类似字符串的地图:["Color: blue","Size: big"] 称为 detailsArray

具有 LinearLayout 和现有 TextView 的现有 ScrollView:

<ScrollView>
    <LinearLayout>
        <TextView
            android:text="something: else"
        />
    </LinearLayout>
</ScrollView>

我故意省略了宽度、高度、xml 模式等常见字段。

现在我想以编程方式添加 textViews。我不知道他们有多少:

    TextView detail;
    LinearLayout llay = (LinearLayout)fragmentView.findViewById(R.id.container);    
    for (int i = 0; i < detailsArray.length; i++) {
                    detail = new TextView(fragmentView.getContext());
                    detail.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
                    detail.setText(detailsArray[i]);
                    llay.addView(detail);
                }
        ScrollView sv = (ScrollView) fragmentView.findViewById(R.id.scroll_view);
        sv.addView(llay);

但我遇到了一个例外:

04-17 12:38:09.975: E/AndroidRuntime(3361): Caused by: java.lang.IllegalStateException: ScrollView can host only one direct child

我应该怎么办?先感谢您。

4

1 回答 1

1

你应该删除sv.addView(llay);,因为你基本上将线性布局两次添加到同一个ScrollView - 你得到的异常以及为什么当你在开始时 removeAllViews 它解决了这个问题。完成 for 循环调用后

sv.invalidate(); 
sv.requestLayout(); 

应该让它刷新它的内容。

于 2013-04-17T15:49:56.043 回答