scrollview = (ScrollView)findViewById(R.id.detailedScrollView);
for (Quotation quotation : object.quotes){
TextView quote = new TextView(this);
quote.setText(quotation.getQuote());
quote.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
scrollview.addView(quote);
}
假设有三个引号,那么我想要三个textViews。但是,上面的代码崩溃了我的应用程序。有任何明显的错误吗?这是我得到的错误:
11-06 17:35:53.214: E/AndroidRuntime(1430): java.lang.IllegalStateException: ScrollView can host only one direct child
答案 0 :(得分:6)
您无法直接在scrollview中添加视图。 scrollview只能包含一个布局对象。您要做的是在滚动视图中添加linearlayout,然后将textview添加到linearlayout
答案 1 :(得分:3)
视图层次结构的布局容器,可以由用户滚动,允许它大于物理显示。 ScrollView是一个FrameLayout,意味着你应该在其中放置一个包含整个内容的子项进行滚动;这个子本身可能是一个具有复杂对象层次结构的布局管理器。经常使用的子项是垂直方向的LinearLayout,呈现用户可以滚动的顶级项目的垂直数组。
TextView类还负责自己的滚动,因此不需要ScrollView,但是将两者结合使用可以在更大的容器中实现文本视图的效果。 Please more detail
最诚挚的问候, 心理
答案 2 :(得分:0)
您需要在ScrollView中添加“LinearLayout”(或“RelativeLayout”)。 假设你有如下布局xml:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearlayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
</LinearLayout>
</ScrollView>
现在你想以编程方式添加'TextView',如下所示:
LinearLayout linearLayout =(LinearLayout) this.findViewById(R.id.linearlayout1);
for (Quotation quotation : object.quotes){
TextView quote = new TextView(this);
quote.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
quote.setPadding(4, 0, 4, 0); //left,top,right,bottom
quote.setText(quotation.getQuote());
linearLayout.addView(quote);
}