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>

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


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


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

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.


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

4

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

app:layout_constraintBottom_toBottomOf="parent"

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" 

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.


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"

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


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

Ini sangat membantu saya


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.