Tampilan ini tidak dibatasi secara vertikal. Saat runtime akan melompat ke kiri kecuali Anda menambahkan batasan vertikal

102

masukkan deskripsi gambar di siniEditor Tata Letak baru di Android Studio 2.2 terus menampilkan kesalahan ini pada tampilan seperti EditText dan Buttons. tolong bantu. Juga, tautan apa pun yang membantu dalam orientasi dengan tata letak kendala baru akan dihargai.

kode:

<?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>
onexf
sumber
Kesalahan apa? Jelaskan masalah Anda yang sebenarnya. Ini hampir tidak cukup detail.
Lexi
dapatkah Anda membagikan kode xml Anda ??
Janki Gadhiya
Setelah selesai meletakkan tata letak batasan, klik tombol untuk menambahkan semua batasan yang hilang secara otomatis.
Alex Cohn
1
tombol? maksud Anda bohlam serat merah? itu tidak menampilkan opsi apa pun untuk menambahkan kendala yang hilang secara otomatis.
onexf

Jawaban:

82

Tata letak batasan bertujuan untuk mengurangi hierarki tata letak dan meningkatkan kinerja tata letak (secara teknis, Anda tidak perlu membuat perubahan untuk ukuran layar yang berbeda, Tidak ada tumpang tindih, berfungsi seperti pesona pada ponsel serta tab dengan batasan yang sama). Begini caranya Anda menyingkirkan kesalahan di atas saat Anda menggunakan editor tata letak baru.

masukkan deskripsi gambar di sini

Klik pada lingkaran kecil dan seret ke kiri sampai lingkaran berubah menjadi hijau, untuk menambahkan pembatas kiri (beri nomor, katakan x dp. Ulangi dengan sisi lain dan biarkan pembatas bawah kosong jika Anda memiliki tampilan lain di bawahnya . masukkan deskripsi gambar di sini

Edit: Menurut situs pengembang, Daripada menambahkan batasan ke setiap tampilan saat Anda menempatkannya di tata letak, Anda dapat memindahkan setiap tampilan ke posisi yang diinginkan, lalu klik Infer Constraints untuk membuat batasan secara otomatis. lebih lanjut di sini

onexf
sumber
Saya baru saja menambahkan tampilan gambar dalam tata letak yang kontras tetapi tidak muncul saat saya menjalankan aplikasi. Bisakah kamu membantuku ?
PriyankaChauhan
79

Dari Android Studio v3 dan yang lebih baru, Infer Constraint telah dihapus dari menu drop-down.

Gunakan ikon tongkat ajaib di menu bilah alat di atas pratinjau desain; ada tombol " Infer Constraints ". Klik tombol ini, ini secara otomatis akan menambahkan beberapa baris di bidang teks dan garis merah akan dihapus.

masukkan deskripsi gambar di sini

Gvtha
sumber
1
Dalam kasus saya, itu hanya menambahkan batasan abaikan tetapi tidak menyelesaikan masalah
mrroot5
solusi ini lebih mudah daripada yang teratas. Tetapi hanya berfungsi untuk AS v3 dan yang lebih baru.
Yohanes AI
44

Cukup salin kode ini ke semua komponen yang akan Anda seret.

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

contoh:

<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"/>
ainz Montenegro
sumber
6
Tapi kenapa? Bisakah Anda menjelaskan detailnya?
Prathamesh More
22

Pergi ke Design, klik kanan pada Widget Anda, Constraint Layout >> Infer Constraints. Anda dapat mengamati bahwa beberapa kode telah ditambahkan secara otomatis ke Teks Anda.

Atul Chavan
sumber
Ya, batasan kesimpulan menggunakan nilai default yang ditentukan dalam file activity.xml
Rohan Gala
5
Follow these steps:
Right click on designing part > Constraint Layout > Infer Constraints
Makvin
sumber
4

Jika Menyimpang Constraintsmasih memberi Anda kesalahan, cukup gunakan kode ini:

app:layout_constraintBottom_toBottomOf="parent"
pengguna8622246
sumber
2

Anda perlu menyeret EditTextdari tepi tata letak dan bukan hanya widget lainnya. Anda juga dapat menambahkan batasan hanya dengan menyeret titik batasan yang mengelilingi widget ke tepi layar untuk menambahkan batasan seperti yang ditentukan.

Kode yang dimodifikasi akan terlihat seperti ini:

    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" 
Abdul Rahman K
sumber
1

Buka Teks tata letak XML di mana widget (tombol atau Tampilan lainnya) menunjukkan kesalahan, fokuskan kursor di sana dan tekan alt+ enterdan pilih atribut kendala yang hilang.

KeyBoardBoy
sumber
Ini juga memberikan pesan peringatan bahwa string "TextView" yang di-hardcode, harus menggunakan sumber daya @string
Mohammad Heydari
1

misalnya saya punya ini

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

gunakan tata letak RelativeLayout seperti ini

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
ibrahim mert
sumber
1

Cukup beralih ke Tampilan Desain, dan cari widget yang bersangkutan. Ambil salah satu titik di batas widget dan gabungkan ke tepi layar yang sesuai (atau ke titik di widget lain).

Misalnya, jika widget adalah bilah alat, ambil saja titik paling atas dan gabungkan ke tepi paling atas layar ponsel seperti yang ditunjukkan pada gambar.

Tampilan Desain

Sunit Gautam
sumber
1
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

Ini sangat membantu saya

Vanya Rachel
sumber
-3

Anda harus pindah androidx.constraintlayout.widget.ConstraintLayoutke RelativeLayout.

Youness Labghough
sumber