Bu görüş dikey olarak sınırlandırılmamıştır. Çalışma zamanında, dikey bir sınırlama eklemediğiniz sürece sola atlar


105

görüntü açıklamasını buraya girinAndroid Studio 2.2'deki yeni Düzen düzenleyici, bu hatayı EditText ve Buttons gibi görünümlerde göstermeye devam ediyor. Ayrıca, yeni kısıtlama düzeni ile ilk katılımda yardımcı olan tüm bağlantılar memnuniyetle karşılanacaktır.

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>

Ne hatası? Lütfen gerçek sorununuzu tanımlayın. Bu yeterli ayrıntı değil.
Lexi

xml kodunuzu paylaşır mısınız?
Janki Gadhiya

Kısıt düzenini yerleştirmeyi bitirdiğinizde, tüm eksik kısıtlamaları otomatik olarak eklemek için düğmeye tıklayın.
Alex Cohn

1
buton? kırmızı tüy bırakmayan ampul mü demek istiyorsun? eksik kısıtlamaları otomatik olarak eklemek için herhangi bir seçenek göstermiyor.
onexf

Yanıtlar:


83

Kısıtlama düzeni, düzen hiyerarşilerini azaltmayı ve düzenlerin performansını iyileştirmeyi amaçlar (teknik olarak, farklı ekran boyutları için değişiklik yapmanız gerekmez, Örtüşme yok, aynı kısıtlamalara sahip bir sekmenin yanı sıra bir mobil cihazda cazibe gibi çalışır). Yeni düzen düzenleyiciyi kullanırken yukarıdaki hatadan kurtulursunuz.

görüntü açıklamasını buraya girin

Küçük daireyi tıklayın ve bir sol kısıtlama eklemek için daire yeşile dönene kadar sola sürükleyin (bir sayı verin, örneğin x dp. Diğer taraflarla tekrarlayın ve altında başka bir görünüm varsa alt kısıtlamayı boş bırakın . görüntü açıklamasını buraya girin

Düzenleme: Geliştiricilerin sitesine göre, mizanpaja yerleştirirken her görünüme kısıtlamalar eklemek yerine, her görünümü istediğiniz konumlara taşıyabilir ve ardından otomatik olarak sınırlamalar oluşturmak için Kısıtlamaları Çıkar'ı tıklayabilirsiniz. daha burada


Kontraint düzeninde yeni görüntü görünümü ekledim ancak uygulamayı çalıştırdığımda gösterilmiyor. lütfen bana yardım edebilir misin ?
PriyankaChauhan

81

Android Studio v3 ve sonraki sürümlerde, Infer Constraint açılır menüden kaldırıldı.

Tasarım önizlemesinin yukarısındaki araç çubuğu menüsünde bulunan sihirli değnek simgesini kullanın ; " Kısıtlamalar Çıkar " düğmesi var. Bu düğmeye tıklayın, bu otomatik olarak metin alanına bazı satırlar ekleyecek ve kırmızı çizgi kaldırılacaktır.

görüntü açıklamasını buraya girin


1
Benim durumumda, sadece bir yok sayma kısıtlaması ekler ancak sorunu
çözmez

bu çözüm en iyisinden daha kolaydır. Ancak yalnızca AS v3 ve sonrası için çalışır.
Yohanes AI

45

Sadece bu kodu sürükleyeceğiniz tüm bileşenlere kopyalayın.

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

misal:

<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
Ama neden? Detaylarını açıklayabilir misin?
Prathamesh More

22

Tasarıma gidin, Widget'ınıza sağ tıklayın, Kısıt Düzeni >> Kısıtlamalar Çıkarın. Metninize bazı kodların otomatik olarak eklendiğini gözlemleyebilirsiniz.


Evet, çıkarım kısıtlamaları activity.xml dosyasında belirtilen varsayılan değerleri kullanır
Rohan Gala

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

4

ConstraintsHalen çıkarım yapmak size hata veriyorsa, sadece şu kodu kullanın:

app:layout_constraintBottom_toBottomOf="parent"

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

Bu bana çok yardımcı oluyor


2

Yalnızca EditTextdiğer widget'ı değil, düzenin kenarından da sürüklemeniz gerekir . Ayrıca, widget'ı çevreleyen kısıtlama noktasını, belirtildiği gibi kısıtlamalar eklemek için ekranın kenarına sürükleyerek de sınırlamalar ekleyebilirsiniz.

Değiştirilen kod şuna benzer bir görünüme sahip olacaktır:

    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

Widget'ın (düğme veya diğer Görünüm) hatayı gösterdiği XML düzen Metnine gidin, imleci oraya odaklayın ve alt+ düğmesine basın enterve eksik kısıtlama niteliklerini seçin.


Ayrıca, Hardcoded "TextView" dizesinin @string kaynağını kullanması gerektiğine dair bir uyarı mesajı verir
Mohammad Heydari

1

örneğin bende bu var

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

RelativeLayout düzenini bunun gibi kullanın

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

1

Basitçe Tasarım Görünümüne geçin ve ilgili parçacığı bulun. Widget'ın sınırındaki noktalardan birini alın ve onu ekranın uygun bir kenarına (veya başka bir widget'taki bir noktaya) birleştirin.

Örneğin, widget bir araç çubuğuysa, en üstteki noktayı alın ve resimde gösterildiği gibi telefon ekranının en üst kenarına birleştirin.

Tasarım görünümü


-3

Sen değiştirmek zorunda androidx.constraintlayout.widget.ConstraintLayoutiçin RelativeLayout.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.