8

将 Spinner 添加到 GridLayout 似乎会“破坏”布局。我准备了一个最小的工作示例来说明这个问题:

我想要一个左边有标签的网格,右边有输入控件。右侧的控件应占用剩余空间。这是一个简单的示例:

带有 EditTexts 的网格

用微调器替换其中一个输入控件会导致右列延伸到屏幕边界之外,从而导致布局难看。

带微调器的网格

为什么会发生这种情况,我该如何避免?


这是第一个示例的代码:

<?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="match_parent"
    android:columnCount="2" >

    <TextView
        android:layout_gravity="left"
        android:text="TextView" />

    <EditText
        android:layout_gravity="fill_horizontal"
        android:hint="EditText" />

    <TextView
        android:layout_gravity="left"
        android:text="TextView" />

    <EditText
        android:layout_gravity="fill_horizontal"
        android:hint="EditText" />

</GridLayout>

这是第二张图片的代码。唯一的区别是第一个 EditText 已被 Spinner 替换:

<?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="match_parent"
    android:columnCount="2" >

    <TextView
        android:layout_gravity="left"
        android:text="TextView" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_gravity="fill_horizontal" />

    <TextView
        android:layout_gravity="left"
        android:text="TextView" />

    <EditText
        android:layout_gravity="fill_horizontal"
        android:hint="EditText" />

</GridLayout>
4

2 回答 2

16

显然,可以通过将layout_widthSpinner 的 设置为零来避免该问题:

<Spinner 
    android:id="@+id/Spinner1"
    android:layout_gravity="fill_horizontal"
    android:layout_width="0dp" />

我会将其标记为已接受的答案,因为它可以轻松解决问题,但如果有人能对此行为提出解释,我会很乐意改变这一点。

于 2012-11-14T14:15:29.973 回答
1
try this code

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

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:hint="EditText" />
    </TableRow>

</TableLayout>
于 2012-11-14T10:23:35.813 回答