该视图不受垂直限制。在运行时,除非您添加垂直约束,否则它将跳到左侧


102

在此处输入图片说明Android Studio 2.2中的新版式编辑器不断在诸如EditText和Buttons之类的视图上显示此错误。友善的帮助。此外,任何有助于新约束布局入门的链接都将受到赞赏。

码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    android:id="@+id/activity_main"
    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"
    tools:context="com.set.email.MainActivity"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="81dp">

    <TextView
        android:text="To:"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="7dp"
        tools:layout_editor_absoluteY="4dp"
        android:id="@+id/textTo"/>

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="24dp"
        android:id="@+id/editTo"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <EditText
        android:layout_width="384dp"
        android:layout_height="42dp"
        android:inputType="textPersonName"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="94dp"
        android:id="@+id/editSubject"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <EditText
        android:layout_width="384dp"
        android:layout_height="273dp"
        android:inputType="textPersonName"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="179dp"
        android:id="@+id/editMessage"
        app:layout_constraintLeft_toLeftOf="@+id/activity_main"
        tools:layout_constraintLeft_creator="50"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <Button
        android:text="Send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="140dp"
        tools:layout_editor_absoluteY="454dp"
        android:id="@+id/btnSend"
        app:layout_constraintLeft_toLeftOf="@+id/editMessage"
        tools:layout_constraintLeft_creator="0"
        app:layout_constraintRight_toRightOf="@+id/activity_main"
        android:layout_marginEnd="16dp"
        tools:layout_constraintRight_creator="0"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>


</android.support.constraint.ConstraintLayout>

什么错 请描述您的实际问题。这还不够详细。
Lexi

您可以分享您的xml代码吗?
Janki Gadhiya

完成约束布局的布局后,单击按钮可自动添加所有缺少的约束。
亚历克斯·科恩

1
按钮?你是说红色皮棉灯泡?它没有显示任何自动添加缺失约束的选项。
onexf

Answers:


82

约束布局旨在减少布局层次结构并提高布局性能(从技术上讲,您不必为不同的屏幕尺寸进行更改,没有重叠,在移动设备上以及在具有相同约束的选项卡上都可以像魅惑一样工作)。使用新的布局编辑器时,您会摆脱上述错误。

在此处输入图片说明

单击小圆圈并将其向左拖动,直到圆圈变为绿色为止,以添加左约束(给一个数字,例如x dp。在另一侧重复该约束,如果在其下方有另一个视图则将底部约束留为空白。 在此处输入图片说明

编辑:根据开发人员站点,您可以将每个视图移动到所需的位置,而不是将约束放置到布局中时向每个视图添加约束,然后单击“推断约束”以自动创建约束。这里更多


我刚刚以矛盾的布局添加了imageview,但是在运行应用程序时未显示。你能帮我么 ?
PriyankaChauhan

79

在Android Studio v3及更高版本中,推断约束已从下拉列表中删除。

使用设计预览上方工具栏菜单中的魔术棒图标;有“ 推断约束 ”按钮。单击此按钮,这将自动在文本字段中添加一些行,并且红线将被删除。

在此处输入图片说明


1
就我而言,它仅添加了ignore约束,但不能解决问题
mrroot5

此解决方案比顶级解决方案更容易。但仅适用于AS v3和更高版本。
Yohanes AI

44

只需将此代码复制到要拖动的所有组件。

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"

例:

<TextView
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    android:text="To:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:layout_editor_absoluteX="7dp"
    tools:layout_editor_absoluteY="4dp"
    android:id="@+id/textTo"/>

6
但为什么?你能解释一下它的细节吗?
Prathamesh更多

22

转到设计,右键单击您的窗口小部件,约束布局>>推断约束。您可以看到一些代码已自动添加到您的文本。


是的,推断约束使用activity.xml文件中指定的默认值
Rohan Gala

5
Follow these steps:
Right click on designing part > Constraint Layout > Infer Constraints

4

如果推断Constraints静止图像仍给您错误,请使用以下代码:

app:layout_constraintBottom_toBottomOf="parent"

2

您需要EditText从布局的边缘拖动,而不仅仅是其他小部件。您还可以通过仅将窗口小部件周围的约束点拖动到屏幕边缘来添加约束,以添加指定的约束。

修改后的代码将类似于以下内容:

    app:layout_constraintLeft_toLeftOf="@+id/router_text"
    app:layout_constraintTop_toTopOf="@+id/activity_main"
    android:layout_marginTop="320dp"
    app:layout_constraintBottom_toBottomOf="@+id/activity_main"
    android:layout_marginBottom="16dp"
    app:layout_constraintVertical_bias="0.29" 

1

转到XML布局文本,其中小部件(按钮或其他视图)指示错误,将光标放在那儿,然后按alt+ enter并选择缺少的约束属性。


它还会给出警告消息,即硬编码字符串“ TextView”应使用@string资源
Mohammad Heydari

1

例如我有这个

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

使用这样的RelativeLayout布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

1

只需切换到“设计视图”,然后找到相关的小部件。抓住小部件边界上的点之一,并将其​​连接到屏幕的适当边缘(或其他某个小部件上的点)。

例如,如果小部件是工具栏,则只需抓住最上面的点并将其连接到电话屏幕的最上面的边缘即可,如图所示。

设计图



-3

您必须更改androidx.constraintlayout.widget.ConstraintLayoutRelativeLayout

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.