在for循环中添加textViews

时间:2011-11-06 22:39:33

标签: android android-layout

      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

3 个答案:

答案 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);
}