Android:如何理解布局?

时间:2016-05-21 08:52:33

标签: android-studio tablelayout

我正在努力创建一个简单的布局,在左边的两个TextView:s彼此之下,并且在右边相互对应两个TimePicker:s。但是,无论我使用哪种观点或我选择的属性看起来相关,我都无法获得理想的结果。这是我目前的尝试:

    <?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1"
    >
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        >
        <TextView
            android:layout_column="1"
            android:id="@+id/text_start_time"
            android:text="@string/start_time"
            android:gravity="center_horizontal"
            />
        <TimePicker
            android:id="@+id/time_picker_start"
            android:timePickerMode="spinner"
            android:layout_marginTop="-25dp"
            android:layout_marginBottom="-25dp"
            android:layout_gravity="center"
            />
    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        >
        <TextView
            android:layout_column="1"
            android:id="@+id/text_end_time"
            android:text="@string/end_time"
            android:layout_gravity="center_horizontal"
            />
        <TimePicker
            android:id="@+id/time_picker_end"
            android:timePickerMode="spinner"
            android:layout_marginTop="-25dp"
            android:layout_marginBottom="-25dp"
            />
    </TableRow>
    <TableRow>
        <Button
            android:layout_column="2"
            android:layout_width="match_parent"
            android:text="@string/button_calculate"
            android:gravity="center"
            android:onClick="calculateWorkingTime"
            />
    </TableRow>
</TableLayout>

这给出了以下输出

Where is "Start"?

正如您所见,“开始”甚至没有显示!我想将“开始”与TimePicker微调器的垂直中心对齐。怎么做?

1 个答案:

答案 0 :(得分:0)

首先,不要使用TableLayout。使用Linears,因为您是初学者,他们更容易使用和理解。这是你应该做的:

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

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

        <TextView
            android:id="@+id/text_start_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/start_time"
            android:gravity="center_horizontal"
            />

        <TimePicker
            android:id="@+id/time_picker_start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:timePickerMode="spinner"
            android:layout_marginTop="-25dp"
            android:layout_marginBottom="-25dp"
            android:layout_gravity="center"
            />
     </LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

        <TextView
            android:id="@+id/text_end_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/end_time"
            android:gravity="center_horizontal"
            />

        <TimePicker
            android:id="@+id/time_picker_end"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:timePickerMode="spinner"
            android:layout_marginTop="-25dp"
            android:layout_marginBottom="-25dp"
            android:layout_gravity="center"
            />
    </LinearLayout>
    <Button
            android:layout_column="2"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:text="@string/button_calculate"
            android:gravity="center"
            android:onClick="calculateWorkingTime"
            />
    </LinearLayout>

我所做的是创建一个线性布局,并在其中另外两个方向:水平,这使得元素看起来彼此相邻。 此外,我已经将宽度和高度放在所有元素上,这非常重要。 我已经把wrap_content,如果你想改变它,没问题。

我没有测试过,如果有任何错误,只需要测试

希望它有所帮助!