Android 如何使用更多 LinearLayout 水平方向全屏显示

Android how take full screen with more LinearLayout orientation horizontal

我正在努力上学,我使用多个 linearLayout 与天数和小时数。 使用 layout_weight 我可以为单个 LinearLayout 中的每个元素设置 space。 但我的问题是如何为 LinearLayout 设置 layout_weight,因为它们设置为水平方向并且不会占用整个屏幕。 就像 table 但我使用 LinearLayout 因为我只需要创建行。

这是Activity

的xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.ddz.diarioscolastico.OrarioActivityProva">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/linearLayout">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_weight="2"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Lun"
        android:id="@+id/textView2"
       />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Mar"
        android:id="@+id/textView" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Mer"
        android:id="@+id/textView3" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Gio"
        android:id="@+id/textView4" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Ven"
        android:id="@+id/textView5" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Sab"
        android:id="@+id/textView6" />
</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:layout_below="@+id/linearLayout"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/linearLayout2">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="1"
        android:id="@+id/textView7" />
</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/linearLayout2"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/linearLayout3">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="2"
        android:id="@+id/textView8" />

</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/linearLayout3"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/linearLayout4">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="3"
        android:id="@+id/textView9" />
</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/linearLayout4"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/linearLayout6">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="4"
            android:id="@+id/textView10" />
</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/linearLayout6"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/linearLayout5">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="5"
        android:id="@+id/textView11" />
</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/linearLayout5"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/linearLayout7">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="6"
        android:id="@+id/textView12" />
</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/linearLayout7"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/linearLayout8">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="7"
        android:id="@+id/textView13" />
</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/linearLayout8"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="8"
        android:id="@+id/textView14" />
</LinearLayout>

如你所见,如果我设置 android:layout_height="match_parent" 是的,所有 LinearLayout 都全屏显示,但只有第一个可见,我想为所有人分屏。

您是否尝试过将 LinearLayout 替换为 TableRow 或使用 GridLayout ? GridLayout 需要 API 14,但较低的 API 可以与支持库一起使用。

使用布局权重是一个有点棘手的任务。 假设你想水平显示三个按钮,它们在线性布局中共享相同的宽度。那么xml代码应该是这样的。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="3"
    android:orientation="horizontal" >
    <Button 
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="Button 1"
        />
    <Button 
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="Button 1"
        />
    <Button 
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="Button 1"
        />

</LinearLayout>

如您所见,在父 LinearLayout 中,我将 weightSum 设置为 3,在每个子按钮中,我将宽度设置为 0dp,将权重设置为 1,并且共有三个按钮,因此它们将共享相同的宽度。

顺便说一句,根父级 (RelativeLayout) 在您给定的布局中没有关闭。

编辑:2

正如你在这里所说的,代码将每个 LinearLayout 平均划分为 layout_weight

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="3"
    android:orientation="vertical" >

    <LinearLayout 
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:background="#00FF00"
        >

    </LinearLayout>
    <LinearLayout 
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:background="#FF0000"
        >

    </LinearLayout>
    <LinearLayout 
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:background="#0000FF"
        >

    </LinearLayout>

</LinearLayout>

输出: