มุมมองนี้ไม่ถูก จำกัด ในแนวตั้ง เมื่อรันไทม์มันจะข้ามไปทางซ้ายเว้นแต่คุณจะเพิ่มข้อ จำกัด แนวตั้ง


108

ป้อนคำอธิบายภาพที่นี่ตัวแก้ไขเค้าโครงใหม่ใน 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

เมื่อวางโครงร่างข้อ จำกัด เสร็จแล้วให้คลิกปุ่มเพื่อเพิ่มข้อ จำกัด ที่ขาดหายไปทั้งหมดโดยอัตโนมัติ
Alex Cohn

1
ปุ่ม? คุณหมายถึงหลอดไฟผ้าสำลีสีแดง? มันไม่แสดงตัวเลือกใด ๆ เพื่อเพิ่มข้อ จำกัด ที่ขาดหายไปโดยอัตโนมัติ
onexf

คำตอบ:


83

เลย์เอาต์ข้อ จำกัด มีจุดมุ่งหมายเพื่อลดลำดับชั้นของเลย์เอาต์และปรับปรุงประสิทธิภาพของเลย์เอาต์ (ในทางเทคนิคคุณไม่จำเป็นต้องทำการเปลี่ยนแปลงสำหรับขนาดหน้าจอที่แตกต่างกันไม่มีการทับซ้อนกันทำงานได้อย่างมีเสน่ห์บนมือถือและแท็บที่มีข้อ จำกัด เดียวกัน) นี่คือวิธีการ คุณกำจัดข้อผิดพลาดข้างต้นเมื่อคุณใช้ตัวแก้ไขเค้าโครงใหม่

ป้อนคำอธิบายภาพที่นี่

คลิกที่วงกลมเล็กแล้วลากไปทางซ้ายจนกว่าวงกลมจะเปลี่ยนเป็นสีเขียวเพื่อเพิ่มข้อ จำกัด ด้านซ้าย (ให้ตัวเลขพูดว่า x dp ทำซ้ำกับด้านอื่น ๆ และปล่อยให้ข้อ จำกัด ด้านล่างว่างไว้หากคุณมีมุมมองอื่นด้านล่าง . ป้อนคำอธิบายภาพที่นี่

แก้ไข: ตามเว็บไซต์ของนักพัฒนาแทนที่จะเพิ่มข้อ จำกัด ให้กับทุกมุมมองเมื่อคุณวางไว้ในเค้าโครงคุณสามารถย้ายแต่ละมุมมองไปยังตำแหน่งที่คุณต้องการจากนั้นคลิกข้อ จำกัด ในการอ้างอิงเพื่อสร้างข้อ จำกัด โดยอัตโนมัติ เพิ่มเติมที่นี่


ฉันเพิ่งเพิ่ม imageview ในรูปแบบที่ไม่เหมาะสม แต่ไม่แสดงเมื่อฉันเรียกใช้แอพ คุณช่วยฉันได้ไหม ?
PriyankaChauhan

82

ตั้งแต่ Android Studio v3 ขึ้นไป Infer Constraint จะถูกลบออกจากเมนูแบบเลื่อนลง

ใช้ไอคอนไม้กายสิทธิ์ในเมนูแถบเครื่องมือเหนือตัวอย่างการออกแบบ มีปุ่ม " Infer Constraints " คลิกที่ปุ่มนี้ซึ่งจะเป็นการเพิ่มบรรทัดในช่องข้อความโดยอัตโนมัติและเส้นสีแดงจะถูกลบออก

ป้อนคำอธิบายภาพที่นี่


1
ในกรณีของฉันเพิ่มข้อ จำกัด ในการเพิกเฉย แต่ไม่สามารถแก้ปัญหาได้
mrroot5

วิธีนี้ง่ายกว่าวิธีแก้ปัญหาด้านบน แต่ใช้ได้กับ AS v3 และใหม่กว่าเท่านั้น
Yohanes AI

47

เพียงคัดลอกโค้ดนี้ไปยังส่วนประกอบทั้งหมดที่คุณจะลาก

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 More

22

ไปที่ Design คลิกขวาที่ Widget, Constraint Layout >> Infer Constraints คุณสามารถสังเกตได้ว่ามีการเพิ่มโค้ดบางส่วนลงในข้อความของคุณโดยอัตโนมัติ


ใช่ข้อ จำกัด ในการอนุมานใช้ค่าเริ่มต้นที่ระบุในไฟล์ activity.xml
Rohan Gala




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

เพียงแค่สลับไปที่มุมมองออกแบบและค้นหาวิดเจ็ตที่เกี่ยวข้อง จับจุดใดจุดหนึ่งบนขอบเขตของวิดเจ็ตแล้วเชื่อมเข้ากับขอบของหน้าจอที่เหมาะสม (หรือจุดบนวิดเจ็ตอื่น ๆ )

ตัวอย่างเช่นหากวิดเจ็ตเป็นแถบเครื่องมือเพียงแค่จับจุดบนสุดแล้วรวมเข้ากับขอบด้านบนสุดของหน้าจอโทรศัพท์ดังที่แสดงในภาพ

มุมมองการออกแบบ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.