为什么 marginBottom 在 Spinner 中不起作用?
Why marginBottom isn't working in Spinner?
谁能解释一下为什么 android:layout_marginBottom
在 Spinner 中不起作用?:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Spinner
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="20dp"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner2" />
</androidx.constraintlayout.widget.ConstraintLayout>
我用android:layout_marginBottom
还是android:layout_margin
都无所谓。但是,如果我使用 android:layout_margin
它会添加顶部、右侧和左侧边距。为什么唯一不起作用的边距是底部?
谢谢。
connect constrain from the button to view or parent 然后它会影响
$
app:layout_constraintBottom_toBottomOf="" `
您需要将微调器限制在底部:
第一种方法:
app:layout_constraintBottom_toBottomOf="parent"
第二种方法:
通过将微调器拖动到根视图的底部来将微调器限制在底部
问题不在于 Spinner
具体 - 如果您使用两个 TextView
,行为保持不变。
关于“为什么”和“如何”的一些观察:
Spinner
顶部和起点被限制为父级 ViewGroup
的顶部和起点。由于您没有指定底部(或结束)约束,底部边距没有意义
另一方面,TextView 有一个顶部约束 - 如果你让它有一个顶部边距,这将达到预期的效果。
现在你可以说“好吧,那么我将把底部约束添加到 Spinner
”。不幸的是,这还不够(我真的不知道 为什么 ConstraintLayout
求解器决定忽略边距...)
如果要给Spinner
设置边距,那么两个View
必须属于一个完整的垂直链:
父级顶部 <- Spinner <-> TextView -> 父级底部
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<Spinner
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/textView"
android:layout_marginBottom="20dp"
app:layout_constraintVertical_bias="0"
app:layout_constraintVertical_chainStyle="packed"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner2"
app:layout_constraintBottom_toBottomOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
谁能解释一下为什么 android:layout_marginBottom
在 Spinner 中不起作用?:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Spinner
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="20dp"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner2" />
</androidx.constraintlayout.widget.ConstraintLayout>
我用android:layout_marginBottom
还是android:layout_margin
都无所谓。但是,如果我使用 android:layout_margin
它会添加顶部、右侧和左侧边距。为什么唯一不起作用的边距是底部?
谢谢。
connect constrain from the button to view or parent 然后它会影响
$
app:layout_constraintBottom_toBottomOf="" `
您需要将微调器限制在底部:
第一种方法:
app:layout_constraintBottom_toBottomOf="parent"
第二种方法: 通过将微调器拖动到根视图的底部来将微调器限制在底部
问题不在于 Spinner
具体 - 如果您使用两个 TextView
,行为保持不变。
关于“为什么”和“如何”的一些观察:
Spinner
顶部和起点被限制为父级ViewGroup
的顶部和起点。由于您没有指定底部(或结束)约束,底部边距没有意义另一方面,TextView 有一个顶部约束 - 如果你让它有一个顶部边距,这将达到预期的效果。
现在你可以说“好吧,那么我将把底部约束添加到 Spinner
”。不幸的是,这还不够(我真的不知道 为什么 ConstraintLayout
求解器决定忽略边距...)
如果要给Spinner
设置边距,那么两个View
必须属于一个完整的垂直链:
父级顶部 <- Spinner <-> TextView -> 父级底部
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<Spinner
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/textView"
android:layout_marginBottom="20dp"
app:layout_constraintVertical_bias="0"
app:layout_constraintVertical_chainStyle="packed"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner2"
app:layout_constraintBottom_toBottomOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>