Android布局动态添加子布局

时间:2015-11-11 05:01:31

标签: android xml android-layout

我一直在尝试多次,而我似乎无法修复我的布局。有没有办法实现这个目标?

上图是有1个孩子和2个孩子时发生的事情。 下图是我想要实现的目标。

Here are the images

这是我的父xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/parent"
    android:layout_width="match_parent"
    android:layout_height="@dimen/height"
    android:orientation="horizontal">

    <RelativeLayout
        android:id="@+id/flow_container"
        android:layout_width="match_parent"
        android:layout_height="title_container_height"
        android:gravity="center_vertical">
        <TextView
            android:id="@+id/flow_title"
            style="@style/TileTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="TEXT" />
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/linear_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical">
    </LinearLayout>
</RelativeLayout>

这是我动态添加的孩子xml

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/primary_icon_section"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:orientation="vertical">
    <ImageView
            android:id="@+id/primary_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:paddingBottom="@dimen/small"
            android:paddingTop="@dimen/small"/>
    <TextView 
            android:id="@+id/primary_sub_text"
            style="@style/Style"
            android:layout_width="wrap_content"
            android:layout_height="18dp"
            android:layout_below="@+id/primary_icon"
            android:layout_gravity="center_horizontal"
            android:textColor="@color/white"
            tools:text="Primary sub text"/>
</LinearLayout>

以下是我添加子布局的方法:

LinearLayout linearLayout = (LinearLayout)parent.findViewById(R.id.linear_layout);
linearLayout.addView(childView);

2 个答案:

答案 0 :(得分:0)

ID为linear_layout的父级linearlayout设置为垂直方向,因此您的子视图将从上到下排列。

尝试将您的孩子xml更改为

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/primary_icon_section"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1"
    android:orientation="vertical">
<ImageView
        android:id="@+id/primary_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:paddingBottom="@dimen/small"
        android:paddingTop="@dimen/small"/>
<TextView 
        android:id="@+id/primary_sub_text"
        style="@style/Style"
        android:layout_width="wrap_content"
        android:layout_height="18dp"
        android:layout_gravity="center_horizontal"
        android:textColor="@color/white"
        tools:text="Primary sub text"/>
</LinearLayout>

并将您的parent.xml设为

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="@dimen/height"
android:orientation="horizontal">

<RelativeLayout
    android:id="@+id/flow_container"
    android:layout_width="match_parent"
    android:layout_height="title_container_height"
    android:gravity="center_vertical">
    <TextView
        android:id="@+id/flow_title"
        style="@style/TileTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:text="TEXT" />
</RelativeLayout>

<LinearLayout
    android:id="@+id/linear_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_gravity="center_horizontal"
    android:orientation="horizontal">
</LinearLayout>
</RelativeLayout>

答案 1 :(得分:0)

您需要做两件事来实现目标:

  1. LinearLayout的{​​{1}}从orientation更改为vertical,使添加方向正确。
  2. 将您的孩子horizontal的{​​{1}}更改为LinearLayout,并将其width更改为0dp
  3. 希望能帮到你。