Ten widok nie jest ograniczony w pionie. W czasie wykonywania przeskoczy w lewo, chyba że dodasz wiązanie pionowe


102

wprowadź opis obrazu tutajNowy edytor układów w Android Studio 2.2 nadal wyświetla ten błąd w widokach, takich jak EditText i Buttons. uprzejmie pomoc. również wszelkie linki pomagające we wdrożeniu nowego układu ograniczeń będą mile widziane.

kod:

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

Jaki błąd? Opisz swój rzeczywisty problem. To za mało szczegółów.
Lexi,

czy możesz udostępnić swój kod xml?
Janki Gadhiya

Po zakończeniu tworzenia układu wiązań kliknij przycisk, aby automatycznie dodać wszystkie brakujące wiązania.
Alex Cohn

1
przycisk? masz na myśli czerwoną żarówkę? nie pokazuje żadnych opcji automatycznego dodawania brakujących wiązań.
onexf

Odpowiedzi:


82

Układ ograniczeń ma na celu zmniejszenie hierarchii układów i poprawę wydajności układów (technicznie rzecz biorąc, nie musisz wprowadzać zmian dla różnych rozmiarów ekranu, brak nakładania się, działa jak urok na telefonie komórkowym, a także na karcie z tymi samymi ograniczeniami). pozbywasz się powyższego błędu, gdy używasz nowego edytora układu.

wprowadź opis obrazu tutaj

Kliknij małe kółko i przeciągnij je w lewo, aż zmieni kolor na zielony, aby dodać lewe ograniczenie (podaj liczbę, powiedzmy x dp. Powtórz to z pozostałymi stronami i pozostaw dolne ograniczenie puste, jeśli masz pod nim inny widok . wprowadź opis obrazu tutaj

Edycja: zgodnie z witryną dla programistów, zamiast dodawać ograniczenia do każdego widoku podczas umieszczania ich w układzie, możesz przenieść każdy widok na żądane pozycje, a następnie kliknąć opcję Rozważ ograniczenia, aby automatycznie utworzyć ograniczenia. więcej tutaj


Właśnie dodałem widok obrazu w układzie przeciwwskazań, ale nie jest wyświetlany, gdy uruchamiam aplikację. możesz mi pomóc ?
PriyankaChauhan

79

Od wersji Android Studio v3 i nowszych Infer Constraint został usunięty z listy rozwijanej.

Użyj ikony różdżki w menu paska narzędzi nad podglądem projektu; jest przycisk „ Infer Constraints ”. Kliknij ten przycisk, spowoduje to automatyczne dodanie niektórych linii w polu tekstowym, a czerwona linia zostanie usunięta.

wprowadź opis obrazu tutaj


1
W moim przypadku dodaje tylko ograniczenie ignorowania, ale nie rozwiązuje problemu
mrroot5

to rozwiązanie jest łatwiejsze niż najlepsze. Ale działa tylko dla AS v3 i nowszych.
Yohanes AI

44

Po prostu skopiuj ten kod do wszystkich komponentów, które będziesz przeciągać.

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

przykład:

<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
Ale dlaczego? Czy możesz wyjaśnić jego szczegóły?
Prathamesh More

22

Przejdź do projektu, kliknij prawym przyciskiem myszy na swoim widżecie, Układ ograniczeń >> Rozważ ograniczenia. Możesz zauważyć, że jakiś kod został automatycznie dodany do twojego tekstu.


Tak, ograniczenia wnioskowania używają wartości domyślnych określonych w pliku activity.xml
Gala Rohanu,

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

4

Jeśli wnioskowanie Constraintsnadal daje błąd, po prostu użyj tego kodu:

app:layout_constraintBottom_toBottomOf="parent"

2

Musisz przeciągnąć EditTextz krawędzi układu, a nie tylko z drugiego widżetu. Możesz także dodać ograniczenia, po prostu przeciągając punkt ograniczenia otaczający widżet do krawędzi ekranu, aby dodać ograniczenia zgodnie z opisem.

Zmodyfikowany kod będzie wyglądał podobnie do tego:

    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

Przejdź do tekstu układu XML, w którym widżet (przycisk lub inny widok) wskazuje błąd, ustaw kursor w tym miejscu i naciśnij alt+ enteri wybierz brakujące atrybuty ograniczeń.


Zawiera również ostrzeżenie, że zakodowany ciąg znaków „TextView” powinien używać zasobu @string
Mohammad Heydari

1

na przykład mam to

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

użyj układu RelativeLayout w ten sposób

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

1

Po prostu przełącz się do widoku projektu i zlokalizuj odpowiedni widżet. Chwyć jedną z kropek na granicy widżetu i połącz ją z odpowiednią krawędzią ekranu (lub kropką na innym widżecie).

Na przykład, jeśli widżet jest paskiem narzędzi, po prostu chwyć najwyższą kropkę i połącz ją z najwyższą krawędzią ekranu telefonu, jak pokazano na obrazku.

Widok projektu


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

To mi bardzo pomaga


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.