以编程方式动态创建自定义布局,与Android中的静态xmls完全相同

时间:2012-07-09 14:25:50

标签: android android-listview horizontalscrollview

我在这里使用这个Horizo​​ntalScrollView - http://www.dev-smart.com/archives/34并且基本上创建了三个水平关卡,如静态使用xml所示。

 <ScrollView
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:id="@+id/lineartoc1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title1"
            android:layout_width="wrap_content"
            android:layout_height="30px"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:background="@drawable/tocheader"
            android:gravity="center_vertical|center_horizontal"
            android:minWidth="150px"
            android:text="example"
            android:textColor="#ffffff"
            android:textSize="18dp"
            android:textStyle="bold" />

        <a.b.c.d.HorizontalListView
            android:id="@+id/listview"
            android:layout_width="wrap_content"
            android:layout_height="150dp"
            android:layout_weight="1"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/title2"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:background="@drawable/tocheader"
            android:gravity="center_vertical|center_horizontal"
            android:minWidth="150dip"
            android:text="example"
            android:textColor="#ffffff"
            android:textSize="18dp"
            android:textStyle="bold" />

        <a.b.c.d.HorizontalListView
            android:id="@+id/listview2"
            android:layout_width="wrap_content"
            android:layout_height="150dp"
            android:layout_weight="3"
            android:textStyle="bold" />


        <TextView
            android:id="@+id/title3"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:background="@drawable/tocheader"
            android:gravity="center_vertical|center_horizontal"
            android:minWidth="150dip"
            android:text="example"
            android:textColor="#ffffff"
            android:textSize="18dp"
            android:textStyle="bold" />

        <a.b.c.d.HorizontalListView
            android:id="@+id/listview3"
            android:layout_width="wrap_content"
            android:layout_height="150dp"
            android:layout_weight="3"
            android:textStyle="bold" />
        <!--
        <TextView
            android:id="@+id/title4"
            android:layout_width="300dp"
            android:layout_height="30dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:background="#88000000"
            android:gravity="center_vertical|center_horizontal"
            android:text="example"
            android:textColor="#ffffff"
            android:textSize="20dp"
            android:textStyle="bold" />

        <a.b.c.d.HorizontalListView
            android:id="@+id/listview4"
            android:layout_width="wrap_content"
            android:layout_height="300dp"
            android:layout_weight="1"
            android:textStyle="bold" />
        -->
    </LinearLayout>
</ScrollView>

我正在创建三个水平列表视图,每个视图上都有文本,现在这些视图相对地放在另一个下面。它是如何工作的最初只有第一个列表有一些项目。单击第一个水平列表视图中的一个项目将创建下一个水平列表,依此类推下一个级别。但是因为它是在xml中创建的,所以我只能有固定数量的级别 - 在我的情况下是三级。如何以编程方式对相同位置执行完全相同的操作,以便我可以获得'n'级别支持。整个事情也包含在scrollview中,因此页面永远不会结束,并且有n个级别的位置。

1 个答案:

答案 0 :(得分:0)

您可以使用findViewById()在代码中获取LinearLayout的句柄,然后调用.addView(View child,LayoutParams)并以这种方式设置子视图。

当您在LinearLayout中设置视图时,请记住使用LinearLayout.LayoutParams。*。