มุมมองนี้ไม่มีข้อ จำกัด


96

ฉันได้รับข้อผิดพลาดต่อไปนี้และฉันใช้ Android studio 2.2 Preview 3 ฉันค้นหาใน Google แต่ไม่พบแหล่งข้อมูลใด ๆ

Error: This view is not constrained, it only has design time positions, so it will jump to (0,0) unless you add constraints

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

<TextView
        android:layout_width="384dp"
        android:layout_height="207dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/calc_default_display"
        android:id="@+id/textView"
        android:background="#ffffff"
        android:layout_margin="0dp"
        android:gravity="bottom|end"
        android:textSize="70sp"
        android:nestedScrollingEnabled="false"
        android:maxLines="2"
        android:maxLength="17"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />

คำตอบ:


154

ในการแก้ไขปัญหานี้อย่างรวดเร็วให้ใช้ทางลัดที่มีประโยชน์นี้ใน Android Studio:

คลิกขวาที่วิดเจ็ตในคำถาม> เค้าโครงข้อ จำกัด > ข้อ จำกัด ในการอ้างอิง:

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

หลังจากนั้นคุณสามารถปรับเปลี่ยนข้อ จำกัด ตามที่อธิบายไว้ที่นี่: https://stackoverflow.com/a/37960888/5556250

อัปเดต

สิ่งนี้ไม่ถูกต้องสำหรับ Android Studio v3 ขึ้นไป ตามความคิดเห็นของ @ purpleladydragons :

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


2
ขอบคุณมากสำหรับวิธีแก้ปัญหาของคุณฉันเป็นมือใหม่ฉันไม่รู้ว่ามีอะไรผิดปกติกับตำแหน่งวิดเจ็ต
Atul Chavan

2
วิธีแก้ปัญหาที่ยอดเยี่ยมแม้ว่าฉันต้องการให้ Android Studio จัดเก็บตำแหน่งตั้งแต่เริ่มต้นแทนที่จะเป็นตำแหน่งเวลาทำงาน คำถามที่ดีกว่าคือทำไม Google จึงคิดว่าเป็นความคิดที่ดีที่จะจัดเก็บตำแหน่งเฉพาะในช่วงรันไทม์? นั่นเป็นขั้นตอนที่ไม่จำเป็นในการทำให้ devs คลิกเพื่อสรุปตำแหน่ง
Antony

ขอบคุณมาก! มีประโยชน์มาก
Paul

24
ฉันใช้ Android Studio 3.0 - "Constraint Layout" ไม่ได้อยู่ในเมนูแบบเลื่อนลงเมื่อฉันคลิกขวาที่วิดเจ็ต ฉันรู้ว่ามีไอคอนที่ดูเหมือนไม้กายสิทธิ์ในเมนูแถบเครื่องมือเหนือตัวอย่างการออกแบบนั่นคือปุ่ม "Infer Constraints" ด้วย
purpleladydragons

ไม่พบโซลูชันใน Android Studio เวอร์ชัน 3 หรือใหม่กว่าอีกต่อไป
Mohammad Heydari

75

วิธีการแก้

เพียงคลิกที่นี่และจะได้รับการแก้ไข


ฉันไม่เห็นแถบเครื่องมือนั้นพร้อมปุ่มนั้น ฉันจะหามันได้อย่างไร?
i_am_david

ฉันไม่รู้ว่าคุณใช้ Android Studio เวอร์ชันอื่นอยู่หรือเปล่า โปรดตรวจสอบปุ่มนั้นควรอยู่ตรงนั้น หากหาไม่พบมีวิธีแก้ปัญหาอื่น ๆ
Cem U

12

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


11

คุณสามารถลองสิ่งนี้: 1. ตรวจสอบให้แน่ใจว่าคุณได้เพิ่ม: คอมไพล์ 'com.android.support:design:25.3.1' (บางทีคุณควรเพิ่มคอมไพล์ 'com.android.support.constraint: constraint-layout: 1.0.2' ) 2.ป้อนคำอธิบายภาพที่นี่

3. คลิกที่Infer Constraintsหวังว่าจะช่วยคุณได้


7

เอาล่ะฉันรู้ว่าคำตอบนี้เก่า แต่ฉันพบวิธีดำเนินการนี้สำหรับเวอร์ชัน 3.1.4 ดังนั้นสำหรับฉันข้อผิดพลาดนี้เกิดขึ้นเมื่อใดก็ตามที่ฉันใส่รายการใหม่ลงในลำดับชั้นดังนั้นฉันจึงรู้ว่าฉันต้องการวิธีแก้ไข หลังจากปรับแต่งสักหน่อยฉันพบวิธีการทำโดยทำตามขั้นตอนเหล่านี้:

  1. คลิกขวาที่วัตถุแล้วไปที่ Center

ขั้นตอนที่ 1

  1. จากนั้นเลือกแนวนอน

ขั้นตอนที่ 2

  1. ทำซ้ำขั้นตอนเหล่านั้นยกเว้นคลิกในแนวตั้งแทนที่จะเป็นแนวนอน

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


6

คลิกขวาจากนั้นออกแบบส่วนบนส่วนประกอบที่คุณพบข้อผิดพลาดและทำตามขั้นตอนเหล่านี้:

  • [สำหรับอดีต หากเกิดข้อผิดพลาดในข้อความธรรมดา]

[1]

เค้าโครงข้อ จำกัด ของข้อความธรรมดา> ข้อ จำกัด ในการอ้างอิง:

ในที่สุดข้อผิดพลาดก็หายไป


6

คลิกขวาที่วิดเจ็ตแล้วเลือก "center" -> "แนวนอน" จากนั้นเลือก "ตรงกลาง" -> "แนวตั้ง"


6

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

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

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


4

คุณเพียงแค่คลิกขวาที่วิดเจ็ตแล้วเลือก "ตรงกลาง" -> "แนวนอน" แล้วทำอีกครั้งจากนั้นเลือก -> "แนวตั้ง" สิ่งนี้ได้ผลสำหรับฉัน ...


0

คุณสามารถไปที่XML fileจากนั้นโฟกัสเคอร์เซอร์ของเมาส์ไปที่ปุ่มมุมมองข้อความหรืออะไรก็ได้ที่คุณเลือกสำหรับเลย์เอาต์ของคุณจากนั้นกดAlt + Enterเพื่อแก้ไขหลังจากนั้นข้อผิดพลาดจะหายไปมันใช้ได้กับฉัน


0

หลังจากคลิกที่ไอคอนไม้กายสิทธิ์เพื่อสรุปข้อ จำกัด :

1) ในหน้าต่าง Projects ไปที่ Gradle Scripts> build.gradle (Module: app)

2) เลื่อนลงไปที่การอ้างอิง

3) มองหาการใช้งาน 'com.android.support:appcompat-v7:28.0.0-beta03'

4) เปลี่ยนบรรทัดนี้เป็นการใช้งาน 'com.android.support:appcompat-v7:28.0.0-alpha1'

5) แบนเนอร์ควรปรากฏขึ้นที่ด้านบนของหน้าต่างคลิกซิงค์เดี๋ยวนี้ที่มุมขวา

ใช้งานได้กับ Android Studio v3.1 คลิกเพื่อดูรูปภาพของการแก้ไขไปยังไฟล์ build.gradle


0

เมื่อสร้างเค้าโครงคุณสามารถทำงานกับการควบคุมทีละรายการได้ง่ายขึ้นแทนที่จะเพิ่มทั้งหมดพร้อมกัน

จาก Layouts Palette ให้ลาก ConstraintLayout ไปที่หน้าจอ

ย้ายการควบคุมที่คุณต้องการภายใน ConstraintLayout

ดังนั้นตอนนี้ ConstraintLayout จะเป็นผู้ปกครองของตัวควบคุมและถ้าคุณเปลี่ยนไปใช้รหัส xml ตัวควบคุมจะซ้อนกันภายใต้ ConstraintLayout

คลิกขวาที่ตัวควบคุมของคุณเลือกข้อ จำกัด จากเมนูและเลือกวิธีที่คุณต้องการจัดแนวให้ตรงกับ ConstraintLayout หลักด้านบนเริ่มต้น ฯลฯ

หากคุณต้องการจัดแนวตัวควบคุมสองตัวให้สัมพันธ์กันให้เลือกทั้งสองตัวควบคุมพร้อมกันด้วยปุ่ม Ctrl จากนั้นคลิกขวาเพื่อเปิดเมนูข้อ จำกัด

ข้อมูลเพิ่มเติม: https://developer.android.com/training/constraint-layout

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

ป้อนคำอธิบายภาพที่นี่ คุณสามารถระบุระยะห่างการแยกข้อ จำกัด ในแท็บโครงร่างข้อ จำกัด :

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

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