我正在构建类似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方向设置为垂直,因为现在您看不到的项目都在屏幕右侧连续出现:)