[英]Margin under ConstraintLayout guideline not appearing properly
I am trying to add some space underneath the Guideline
for my constraint layout, but for some reason it doesn't appear to be applied.我正在尝试为我的约束布局在
Guideline
下方添加一些空间,但由于某种原因它似乎没有被应用。 Does anyone know what is going on and how to apply 5dp of margin underneath the Guideline
(for both portrait and landscape orientations)?有谁知道发生了什么以及如何在
Guideline
下方应用 5dp 的边距(纵向和横向)?
XML layout XML 布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/lightgrey">
<com.google.android.gms.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_townmap"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#09c"
app:layout_constraintBottom_toBottomOf="@+id/guideline"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.9"/>
<ImageView
android:id="@+id/imageViewSun"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:src="@drawable/ic_sun_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/switch"
app:layout_constraintTop_toBottomOf="@+id/guideline"
/>
<Switch
android:id="@+id/switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="5dp"
android:background="@android:color/transparent"
android:theme="@android:style/Theme.Material.Light"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/imageViewSun"
app:layout_constraintRight_toLeftOf="@+id/imageViewMoon"
app:layout_constraintTop_toBottomOf="@+id/guideline"/>
<ImageView
android:id="@+id/imageViewMoon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_moon_black"
android:layout_marginBottom="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/switch"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/guideline"/>
</android.support.constraint.ConstraintLayout>
Portrait orientation纵向
Portrait orientation (close-up)纵向(特写)
Landscape orientation横向
Landscape orientation (close-up)横向(特写)
You can apply margins to Guidelines:您可以将边距应用于指南:
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="5dp" />
Although you might need to adjust the margin layout_constraintGuide_begin
and the android:orientation
accordingly.尽管您可能需要相应地调整边距
layout_constraintGuide_begin
和android:orientation
。 Probably you should do that though a portrait layout xml file and a landscape layout xml file in their correct res folder locations.可能您应该通过纵向布局 xml 文件和横向布局 xml 文件在其正确的 res 文件夹位置执行此操作。
Actually, the thing is you have added Guideline
and you are using app:layout_constraintGuide_percent="0.9"
.实际上,问题是您添加了
Guideline
并且您正在使用app:layout_constraintGuide_percent="0.9"
。 This means that Guideline
will be set according to the parent layout, so when you change orientation it will look weird.这意味着
Guideline
将根据父布局设置,因此当您更改方向时,它会看起来很奇怪。
Use following code to solve your problem:使用以下代码来解决您的问题:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/lightgrey">
<com.google.android.gms.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_townmap"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#09c"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/imageViewSun"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/imageViewSun"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:src="@drawable/ic_sun_black"
app:layout_constraintTop_toBottomOf="@+id/map_stationmap_lighttheme"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/switch" />
<Switch
android:id="@+id/switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
app:layout_constraintTop_toBottomOf="@+id/map_stationmap_lighttheme"
android:background="@android:color/transparent"
android:theme="@android:style/Theme.Material.Light"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/imageViewSun"
app:layout_constraintRight_toLeftOf="@+id/imageViewMoon"/>
<ImageView
android:id="@+id/imageViewMoon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_moon_black"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
app:layout_constraintTop_toBottomOf="@+id/map_stationmap_lighttheme"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/switch"
app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.