Horizo​​ntalScrollView只能托管一个直接子项

时间:2013-06-05 14:52:40

标签: java android

我有一个相对布局,并在我的水平滚动视图中以编程方式添加imageview,放在xml中。当我尝试在horizo​​ntalScrollView ..im中添加我的imageview时获得运行时异常.Horizo​​ntalScrollView只能托管一个孩子。你能不能伙计们帮帮我

  RelativeLayout.LayoutParams HParams = new RelativeLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        HParams.topMargin = 200 * displayHeight / 480;
        HsrollView.setLayoutParams(HParams);

         for (int i = 0; i < 4; i++) { 
             ImageView btnTag = new ImageView(this);
             btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
             btnTag.setImageResource(R.drawable.book);
             btnTag.setTag(i);
             btnTag.setId(i);
             HsrollView.addView(btnTag);
         }

XML文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/directbg"
    tools:context=".DirectorActivity" >
    <HorizontalScrollView
        android:id="@+id/Hscrollview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:scrollbars="none">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </LinearLayout>
    </HorizontalScrollView>
    </RelativeLayout>

3 个答案:

答案 0 :(得分:7)

意思是,您必须将imageview添加到linearlayout。当您添加图像视图时,您将其添加到HorizontalScrollview,其中还有一个LinearLayout,通过向Horizo​​ntalScrollView添加2个子元素,您无法执行此操作

答案 1 :(得分:3)

您应该将按钮添加到LinearLayout,而不是直接添加到HorizontalScrollView。如错误所示,HorizontalScrollView只能有一个孩子。

执行此操作的最佳方法是为您的LinearLayout提供一个ID,并在代码中引用LinearLayout而不是HorizontalScrollView

答案 2 :(得分:1)

错误告诉您所需的一切。 ScrollView只能有一个孩子,在您的布局xml中,LinearLayout内已有ScrollView,因此您只需将图片添加到LinearLayout而不是ScrollView {{1}}。