我一直在尝试多次,而我似乎无法修复我的布局。有没有办法实现这个目标?
上图是有1个孩子和2个孩子时发生的事情。 下图是我想要实现的目标。
这是我的父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);
答案 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)
您需要做两件事来实现目标:
LinearLayout
的{{1}}从orientation
更改为vertical
,使添加方向正确。horizontal
的{{1}}更改为LinearLayout
,并将其width
更改为0dp
。希望能帮到你。