我正在构建类似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>


然后在代码中,我尝试将每个高度为50px的RelativeLayouts添加到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个元素,并且所有的textviews都在那里,所以我希望看到400px LinearLayout依次填充有10个相对布局,每个布局的高度均为50px(和fill_parent宽度)阅读“测试”-但我看到的只是一个,就好像只添加了一个,或者它们都位于另一个之上。

立即获取屏幕截图...

最佳答案

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

然后,您可能还需要将LinearLayout方向设置为垂直,因为现在您看不到的项目都在屏幕右侧连续出现:)

07-24 09:44
查看更多