我正在构建像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宽度)阅读“测试” - 但我看到的只是一个,好像只有一个被添加,或者它们都位于彼此之上。
立即获取屏幕截图...
答案 0 :(得分:3)
当您向布局添加内容时,必须使用 类型的布局参数。因此,当您添加LinearLayout
时,您应该使用LinearLayout.LayoutParams
。
然后你可能还需要将LinearLayout方向设置为垂直方向,因为现在你看不到的项目都在右边的一行中显示:)
答案 1 :(得分:2)
尝试将android:orientation="vertical"
添加到持有LinearLayout
的{{1}}。