android - GridLayout 内的 Spinner

标签 android layout android-gridlayout

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

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

Grid with EditTexts

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

Grid with 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" />

    <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>

最佳答案

显然,可以通过将 Spinner 的 layout_width 设置为零来避免此问题:

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

我会将此标记为已接受的答案,因为它很容易解决问题,但如果有人可以对此行为提出解释,我会很乐意更改它。

关于android - GridLayout 内的 Spinner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376728/

相关文章:

java - Swing 中的固定大小项目

html - 简单的CSS问题 : Title text on upper left, 右上角的按钮

android - 可扩展的 ListView 总是滚动到底部问题

android - Android Kotlin中的自定义Alertdialog

android - LocationManager每分钟更新一次,消​​耗大量电池电量

android - GridLayout 越界

java - 如何将多个 View 作为单个 View 添加到 Android 中的 GridLayout?

android - LinearLayout 内的 GridLayout

android - 在 Jetpack Compose 的文本组件中显示新行

android - 如何在 Android GridView 中获取 ImageButton 的大小?