以编程方式构建布局问题

时间:2011-03-05 16:50:22

标签: android android-layout

我正在构建像ListView这样的东西,但我自己动手,因为我想做一些自定义的东西,并且比使用ArrayAdapters有更多的控制。

所以我用XML定义了部分布局,包括ScrollView中的一个LinerLayout。我的目标是在代码中绑定到Linearlayout,然后在不使用XML的情况下在LinearLayout中插入额外的RelativeLayouts,只需要代码。

这是我的XML:

            <ScrollView
               xmlns:android="http://schemas.android.com/apk/res/android"
               android:id="@+id/ListScroll"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
             >

                    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                       android:layout_width="fill_parent"
                       android:id="@+id/ListHolder"
                       android:layout_height="400px"
                       android:background="#323232"
                     >
                     <!--Here is where I want the RelativeLayouts to go...  -->     
                    </LinearLayout>
            </ScrollView>

然后在代码中,我试图将RelativeLayouts(每个高度为50px)添加到LinearLayout,上面的那个高度为400px。

                //The parent container - is defined above in XML.
                itemContainer = new LinearLayout(context);
                itemContainer = (LinearLayout)findViewById(R.id.ListHolder);
                Layouts = new ArrayList<RelativeLayout>();
                Layouts = LoadWithRelativeLayouts();

                for(RelativeLayout listItem: Layouts){  

                        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 40);
                        listItem.setLayoutParams(params);
                        itemContainer.addView(listItem);
                  }

数组中的每个布局都有一个文本视图,其中显示“Test”。当我单步执行代码时,数组中有10个元素,并且所有的textview都在那里,所以我希望看到400px LinearLayout一个接一个地填充10个相对布局,每个都有50px高度(和fill_parent宽度)阅读“测试” - 但我看到的只是一个,好像只有一个被添加,或者它们都位于彼此之上。

立即获取屏幕截图...

2 个答案:

答案 0 :(得分:3)

当您向布局添加内容时,必须使用 类型的布局参数。因此,当您添加LinearLayout时,您应该使用LinearLayout.LayoutParams

然后你可能还需要将LinearLayout方向设置为垂直方向,因为现在你看不到的项目都在右边的一行中显示:)

答案 1 :(得分:2)

尝试将android:orientation="vertical"添加到持有LinearLayout的{​​{1}}。