gpt4 book ai didi

android - marginTop 不适用于 ConstraintLayout 和 wrap_content

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:16 26 4
gpt4 key购买 nike

在我的 Fragment 中,我有一个带有 layout_height="wrap_content" 的 ConstraintLayout,我希望在 View 底部的两个按钮之间有一个边距。

当我将此边距作为 layout_marginBottom 添加到上方按钮 (button_welcome_signup) 时,它似乎工作正常。但是,如果我尝试将它添加到底部按钮 (button_welcome_signin) 作为 layout_marginTop 它不起作用。

有人知道这里的问题是什么/如果我做错了什么吗?

(请注意,我使用 wrap_content 是有原因的,而且我非常想在底部按钮上使用边距,因此我可以为其样式添加一些边距,以在我的项目中实现更好的 UI 一致性).

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:MyAppApp="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@color/white"
android:minHeight="@dimen/min_height_welcome_frame"
android:padding="@dimen/margin_all_frame_inner">

<ImageView
android:id="@+id/imageview_welcome_logo"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/logo_header"
MyAppApp:layout_constraintTop_toTopOf="parent"
MyAppApp:layout_constraintLeft_toLeftOf="parent"
MyAppApp:layout_constraintRight_toRightOf="parent" />

<TextView
android:id="@+id/textiew_welcome_title"
style="@style/MyAppTextViewTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_all_component_l"
android:text="@string/welcome_title"
MyAppApp:layout_constraintTop_toBottomOf="@id/imageview_welcome_logo" />

<TextView
android:id="@+id/textview_welcome_text"
style="@style/MyAppTextViewText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/welcome_message"
MyAppApp:layout_constraintTop_toBottomOf="@id/textiew_welcome_title" />

<Button
android:id="@+id/button_welcome_signin"
style="@style/MyAppSubButton"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginTop="@dimen/margin_all_component_s"
android:text="@string/welcome_sign_in"
MyAppApp:layout_constraintBottom_toBottomOf="parent" />

<Button
android:id="@+id/button_welcome_signup"
style="@style/MyAppButton"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_marginTop="@dimen/margin_all_component_l"
android:text="@string/welcome_sign_up"
MyAppApp:layout_constraintBottom_toTopOf="@id/button_welcome_signin"
MyAppApp:layout_constraintTop_toBottomOf="@id/textview_welcome_text"
MyAppApp:layout_constraintVertical_bias="1" />

</android.support.constraint.ConstraintLayout>

样式.xml:

<style name="MyAppButton" parent="Widget.AppCompat.Button">
<item name="android:background">@drawable/button_selector_blue</item>
<item name="android:textSize">@dimen/textsize_all_l</item>
<item name="android:textColor">@color/white</item>
<item name="fontFamily">@font/my_sans_serif_regular</item>
</style>

<style name="MyAppSubButton" parent="Widget.AppCompat.Button">
<item name="android:background">@drawable/button_selector_transparent</item>
<item name="android:textSize">@dimen/textsize_all_l</item>
<item name="android:textColor">@color/turquoise_blue</item>
<item name="fontFamily">@font/my_sans_serif_regular</item>
</style>

最佳答案

ConstraintLayout 中, subview 的侧边距只有在该侧被约束到另一个 View 时才会生效。在您的原始示例中,顶部按钮的底部边距有效,因为顶部按钮具有底部约束:

MyAppApp:layout_constraintBottom_toTopOf="@id/button_welcome_signin"

但是,底部按钮的顶部边距不起作用,因为底部按钮对其顶部没有约束。

如果您想在底部按钮上使用上边距,请添加此约束:

MyAppApp:layout_constraintTop_toBottomOf="@+id/button_welcome_signup"

请注意,您必须通过将此属性添加到顶部按钮来更新链样式(因为此新约束会创建一个链):

MyAppApp:layout_constraintVertical_chainStyle="packed"

关于android - marginTop 不适用于 ConstraintLayout 和 wrap_content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48082480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com