如何使android视图占用剩余空间

时间:2017-01-05 11:11:56

标签: android android-layout

我想要一个输入字段列表,左边是标签,用于编辑屏幕。在底部需要一组按钮,这些按钮应该在中央对齐。 标签可以具有不同的宽度,具体取决于语言,因此EditText视图需要跨越剩余空间。我正在使用网格布局,因为我需要将所有EditText视图对齐到左边的垂直线。

我现在花了半天时间来解决这个问题,但我未能取得进展。我能得到的最接近的是:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

    <TextView
        android:layout_column="0"
        android:layout_row="0"
        android:text="Label 1234545"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvHeightLabel"/>

    <EditText
        android:layout_column="1"
        android:layout_row="0"
        android:text="Some text which is too long that it could fit in one single row"
        android:layout_gravity="fill_horizontal"
        android:inputType="numberDecimal"
        android:ellipsize="end"
        android:id="@+id/etHeight"
        android:layout_width="259dp"/>

    <TextView
        android:layout_column="0"
        android:layout_row="1"
        android:text="Label 2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvHeightLabel2"/>

    <EditText
        android:layout_column="1"
        android:layout_row="1"
        android:text="Some text which is too long that it could fit in one single row"
        android:layout_gravity="fill_horizontal"
        android:inputType="numberDecimal"
        android:ellipsize="end"
        android:id="@+id/etHeight2"
        android:layout_width="259dp"/>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_row="3"
        android:layout_column="0"
        android:layout_columnSpan="2">

        <Button
            style="?android:attr/buttonBarButtonStyle"
            android:text="Button 1"
            android:layout_height="wrap_content"
            android:id="@+id/btCancel"
            android:layout_weight="1"
            android:layout_width="wrap_content"/>

        <Button
            style="?android:attr/buttonBarButtonStyle"
            android:text="Button 2"
            android:layout_height="wrap_content"
            android:id="@+id/btSave"
            android:layout_weight="1"
            android:layout_width="wrap_content"/>

    </LinearLayout>

</GridLayout>

此布局如下所示:

Layout set automatically by Android Studio

它似乎首先工作,但是当标签超过一定大小时,EditText视图元素会从屏幕右侧生长出来:

EditText views grow out of the screen

我甚至不知道为什么上面的解决方案适用于标签,而标签只是稍微增长。 EditText元素的宽度设置为259dp,由Android Studio自动设置。 (我试图通过鼠标在设计屏幕上的预览上调整EditText视图来安排它.Android Studio在上面给出的某个点自动排列它。)

必须有一些属性让视图消耗掉与其内容无关的内容。文字可以滚动,我没关系。我觉得我根本不了解布局概念。

1 个答案:

答案 0 :(得分:0)

使用填充来限制文本的流动。