我在线性布局中有四个元素。
我希望以classALabel
& classBLabel
并排排列,并排放在屏幕的半个半宽处。
classA
& classB
也在屏幕的两半宽度旁边并排排列,但是classALabel
& classBLabel
。
以下是我到目前为止所尝试的内容,但这并不是我想要的。它只是并排显示所有四个元素,每个屏幕空间占25%。
<LinearLayout
android:id="@+id/ClassALayout"
android:layout_width="match_parent"
android:layout_height="@dimen/tile_height"
android:layout_below="@+id/ClassLayout"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:id="@+id/classALabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/classALabel" />
<TextView
android:id="@+id/classA"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@+id/classALabel"
android:layout_marginTop="@dimen/dimen_2"
android:layout_alignParentLeft="true"
android:layout_weight="1"
/>
<TextView
android:id="@+id/classBLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@+id/classA"
android:layout_weight="1"
android:text="@string/classBLabel" />
<TextView
android:id="@+id/classB"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@+id/classBLabel"
android:layout_marginTop="@dimen/dimen_2"
android:layout_weight="1"
/>
</LinearLayout>
答案 0 :(得分:2)
我认为最适合您的解决方案是
<TableLayout
android:id="@+id/ClassALayout"
android:layout_width="match_parent"
android:layout_height="@dimen/tile_height"
android:layout_below="@+id/ClassLayout"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
>
<TableRow
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/classALabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/classALabel" />
<TextView
android:id="@+id/classA"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen_2"
android:layout_weight="1"
/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:id="@+id/classBLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/classBLabel" />
<TextView
android:id="@+id/classB"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen_2"
android:layout_weight="1"
/>
</TableRow>
或者如果你真的想使用LinearLayout
,你需要使用LinearLayout
父android:orientation="vertical"
与android:orientation="horizontal"
的2个子线性布局,但请记住,孩子越多你有相对大小的布局(意味着使用android:layout_weight
)对系统的负担越多。
或者您可以使用相对布局,但不能使用android:layout_weight
答案 1 :(得分:1)
这是因为您只创建了一个水平方向的LinearLayout。您将放在此布局中的所有视图都将位于同一行中。
您所要做的就是创建父布局,它可以是线性布局,垂直方向,然后在此布局内部创建2个单独的线性布局,水平方向,并在每个布局中放置2个文本视图。
答案 2 :(得分:1)
这种情况正在发生,因为您已将所有视图放入具有水平方向的单个线性布局中。由于有4个视图,权重= 1,因此屏幕分为4个相等的部分。
以下代码可帮助您实现所需目标。
ClassALayout线性布局是父布局,它进一步包含两个子线性布局 - LabelContainer线性布局和ClassContainer线性布局。 ClassContainer布局位于LabelContainer布局下方,因为父布局具有垂直方向。两个子布局包含2个textview。 标签文本视图位于类文本视图上方,所有这些文本视图占据了屏幕空间的50%。
<LinearLayout
android:id="@+id/ClassALayout"
android:layout_width="match_parent"
android:layout_height="@dimen/tile_height"
android:layout_below="@+id/ClassLayout"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/LabelContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/classALabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/classALabel" />
<TextView
android:id="@+id/classBLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/classBLabel" />
</LinearLayout>
<LinearLayout
android:id="@+id/ClassContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/classA"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen_2"
android:layout_weight="1"/>
<TextView
android:id="@+id/classB"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen_2"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
答案 3 :(得分:0)
它是一个快速而肮脏的解决方案,但它会给你你想要的东西:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent">
<TextView
android:id="@+id/classALabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="classALabel" />
<TextView
android:id="@+id/classBLabel"
android:layout_width="match_parent"
android:layout_weight="0.5"
android:layout_height="wrap_content"
android:text="ClassBLabel" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent">
<TextView
android:id="@+id/classA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="ClassA"
android:layout_weight="1"
/>
<TextView
android:id="@+id/classB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:text="ClassB"
/>
</LinearLayout>
</LinearLayout>
这是输出:
ScreenSize的一半。