Android 以编程方式构建问题布局

Android 以编程方式构建问题布局,android,android-layout,Android,Android Layout,我正在构建类似ListView的东西,但我正在运行自己的,因为我想做一些自定义的事情,并且比使用ArrayAdapter拥有更多的控制权 所以我用XML定义了部分布局,包括ScrollView中的一个LinerLayout。我的目标是在代码中绑定到该Linearlayout,然后在Linearlayout中插入其他RelativeLayout,不使用XML,只使用代码 以下是我的XML: <ScrollView xmlns:androi

我正在构建类似ListView的东西,但我正在运行自己的,因为我想做一些自定义的事情,并且比使用ArrayAdapter拥有更多的控制权

所以我用XML定义了部分布局,包括ScrollView中的一个LinerLayout。我的目标是在代码中绑定到该Linearlayout,然后在Linearlayout中插入其他RelativeLayout,不使用XML,只使用代码

以下是我的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);
                  }
//父容器-在上面的XML中定义。
itemContainer=新的线性布局(上下文);
itemContainer=(LinearLayout)findViewById(R.id.ListHolder);
Layouts=新的ArrayList();
Layouts=LoadWithRelativeLayouts();
对于(RelativeLayout listItem:Layouts){
RelativeLayout.LayoutParams params=新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_父项,40);
listItem.setLayoutParams(参数);
itemContainer.addView(listItem);
}
数组中的每个布局都有一个文本视图,上面写着“Test”。当我逐步浏览代码时,数组中有10个元素,所有的文本视图都在那里,因此我希望看到400px的线性布局中依次填充10个相对布局,每个布局的高度(和填充父宽度)为50px,读取“Test”-但我看到的只是一个,好像只添加了一个,或者它们都位于彼此的顶部


正在获取屏幕截图

尝试将
android:orientation=“vertical”
添加到
LinearLayout
中,按住
RelativeLayout
s.

尝试将
android:orientation=“vertical”
添加到
LinearLayout
中,按住
RelativeLayout

向布局添加内容时,您必须使用这种布局参数。因此,在添加到
LinearLayout
时,应该使用
LinearLayout.LayoutParams


然后您可能还需要将LinearLayout方向设置为vertical,因为现在您看不到的项目都在屏幕右侧的一行中:)

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


然后您可能还需要将LinearLayout方向设置为vertical,因为现在您看不到的项目都在屏幕右侧的一行中:)

您确定所有10个都存在吗?你用过调试器了吗?@Nick Campion-是的,数组中满是10个元素-我用过了。我以相同的方式加载每个元素,并使用一个文本视图来读取“Test”。我只看到一个条目写着“Test”——它的背景是颜色——XML定义的颜色——但它的高度只有40PX,323232的高度不应该是400px吗?伙计,你需要设置
线性布局的方向。
…@techiServices——实际上,只有68秒的差异。我喜欢Stackoverflow,但是这里有太多好斗的人了——而你刚刚提出了一个完美的例子。你基本上是指责他偷了你的答案。你确定这10个答案都存在吗?你用过调试器了吗?@Nick Campion-是的,数组中满是10个元素-我用过了。我以相同的方式加载每个元素,并使用一个文本视图来读取“Test”。我只看到一个条目写着“Test”——它的背景是颜色——XML定义的颜色——但它的高度只有40PX,323232的高度不应该是400px吗?伙计,你需要设置
线性布局的方向。
…@techiServices——实际上,只有68秒的差异。我喜欢Stackoverflow,但是这里有太多好斗的人了——而你刚刚提出了一个完美的例子。你基本上是指责他偷了你的答案。@techiServices如果在我写的时候发布了答案,而我没有收到通知,是的。如果在你写答案的时候发布了答案,你会收到通知。。。您还可以查看答案。我不知道您使用的浏览器是什么,但它在Firefox上运行良好。@techiServices,如果在我写作时发布了,但我没有收到通知,是的。如果在您写作时发布了答案,您会收到通知。。。您还可以查看答案。我不知道你用什么浏览器,但它在Firefox上运行良好。