向 GridLayout 添加 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/