Chế độ xem này không bị hạn chế theo chiều dọc. Trong thời gian chạy, nó sẽ nhảy sang trái trừ khi bạn thêm một ràng buộc dọc


98

nhập mô tả hình ảnh ở đâyTrình chỉnh sửa Bố cục mới trong Android Studio 2.2 tiếp tục hiển thị lỗi này trên các chế độ xem như EditText và Buttons. Vui lòng giúp đỡ. Ngoài ra, bất kỳ liên kết nào giúp tham gia với bố cục ràng buộc mới sẽ được đánh giá cao.

mã:

<?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>

Lỗi gì? Vui lòng mô tả vấn đề thực tế của bạn. Đây là gần như không đủ chi tiết.
Lexi

bạn có thể chia sẻ mã xml của bạn không ??
Janki Gadhiya

Khi hoàn thành việc thiết lập bố cục ràng buộc, hãy nhấp vào nút để tự động thêm tất cả các ràng buộc còn thiếu.
Alex Cohn

1
cái nút? bạn có nghĩa là bóng đèn đỏ? nó không hiển thị bất kỳ tùy chọn nào để tự động thêm các ràng buộc bị thiếu.
onexf

Câu trả lời:


81

Bố cục ràng buộc nhằm mục đích giảm phân cấp bố cục và cải thiện hiệu suất của bố cục (về mặt kỹ thuật, bạn không phải thực hiện thay đổi cho các kích thước màn hình khác nhau, Không chồng chéo, hoạt động giống như charm trên thiết bị di động cũng như tab có cùng các ràng buộc). bạn sẽ thoát khỏi lỗi trên khi sử dụng trình chỉnh sửa bố cục mới.

nhập mô tả hình ảnh ở đây

Nhấp vào vòng tròn nhỏ và kéo nó sang trái cho đến khi vòng tròn chuyển sang màu xanh lục, để thêm ràng buộc bên trái (đưa ra một con số, chẳng hạn như x dp. Lặp lại điều đó với các mặt khác và để trống ràng buộc dưới cùng nếu bạn có một chế độ xem khác bên dưới nó . nhập mô tả hình ảnh ở đây

Chỉnh sửa: Theo trang web của nhà phát triển, Thay vì thêm các ràng buộc vào mọi chế độ xem khi bạn đặt chúng vào bố cục, bạn có thể di chuyển từng chế độ xem vào các vị trí bạn muốn, sau đó nhấp vào Infer Constraints để tự động tạo các ràng buộc. thêm ở đây


Tôi vừa thêm chế độ xem hình ảnh theo bố cục tương phản nhưng không hiển thị khi tôi chạy ứng dụng. Bạn có thể giúp tôi không ?
PriyankaChauhan

79

Từ Android Studio v3 trở lên, Infer Constraint đã bị xóa khỏi menu thả xuống.

Sử dụng biểu tượng cây đũa thần trong menu thanh công cụ phía trên bản xem trước thiết kế; có nút " Suy ra Ràng buộc ". Nhấp vào nút này, thao tác này sẽ tự động thêm một số dòng trong trường văn bản và dòng màu đỏ sẽ bị xóa.

nhập mô tả hình ảnh ở đây


1
Trong trường hợp của tôi, nó chỉ thêm một bỏ qua khó khăn nhưng nó không giải quyết được vấn đề
mrroot5

giải pháp này dễ dàng hơn giải pháp hàng đầu. Nhưng chỉ hoạt động cho AS v3 trở lên.
Yohanes AI

42

Chỉ cần sao chép mã này vào tất cả các thành phần mà bạn sẽ kéo.

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

thí dụ:

<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"/>

4
Nhưng tại sao? Bạn có thể giải thích chi tiết của nó?
Prathamesh More

22

Đi tới Thiết kế, nhấp chuột phải vào Widget, Bố cục Ràng buộc >> Suy ra Ràng buộc. Bạn có thể thấy rằng một số mã đã được tự động thêm vào Văn bản của bạn.


Có, các ràng buộc suy luận sử dụng các giá trị mặc định được chỉ định trong tệp activity.xml
Rohan Gala

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

4

Nếu Suy ra Constraintsvẫn cho bạn lỗi, chỉ cần sử dụng mã này:

app:layout_constraintBottom_toBottomOf="parent"

2

Bạn cần phải kéo EditTexttừ rìa của bố cục chứ không chỉ kéo tiện ích con khác. Bạn cũng có thể thêm các ràng buộc bằng cách chỉ cần kéo điểm ràng buộc bao quanh tiện ích con đến cạnh màn hình để thêm các ràng buộc như đã chỉ định.

Mã đã sửa đổi sẽ trông giống như sau:

    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

Chuyển đến Văn bản bố cục XML nơi tiện ích con (nút hoặc Dạng xem khác) chỉ ra lỗi, tập trung con trỏ vào đó và nhấn alt+ entervà chọn các thuộc tính ràng buộc bị thiếu.


Nó cũng đưa ra thông báo cảnh báo rằng chuỗi Hardcoded "TextView", nên sử dụng tài nguyên @string
Mohammad Heydari

1

ví dụ tôi có cái này

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

sử dụng bố cục RelativeLayout như thế này

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

1

Chỉ cần chuyển sang Chế độ xem thiết kế và tìm tiện ích liên quan. Lấy một trong các dấu chấm trên ranh giới của tiện ích con và nối nó với một cạnh thích hợp của màn hình (hoặc với một dấu chấm trên một số tiện ích con khác).

Ví dụ: nếu tiện ích là một thanh công cụ, chỉ cần lấy dấu chấm trên cùng và nối nó với cạnh trên cùng của màn hình điện thoại như trong hình.

Chế độ xem thiết kế


1
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

Điều này giúp tôi rất nhiều


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.