Saya menggunakan ConstraintLayout
aplikasi saya untuk membuat tata letak aplikasi. Saya mencoba untuk membuat layar ketika satu EditText
dan Button
harus di tengah dan Button
harus di bawah EditText
dengan marginTop hanya 16dp.
Inilah tata letak dan tangkapan layar saya seperti apa tampilannya sekarang.
activity_authenticate_content.xml
<android.support.constraint.ConstraintLayout 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"
android:paddingLeft="16dp"
android:paddingRight="16dp"
tools:context="com.icici.iciciappathon.login.AuthenticationActivity">
<android.support.design.widget.TextInputLayout
android:id="@+id/client_id_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_client_id"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/authenticate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login_auth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/client_id_input_layout"
app:layout_constraintRight_toRightOf="@id/client_id_input_layout"
app:layout_constraintTop_toTopOf="@id/client_id_input_layout" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.Guideline
? Apakah kita perlu menggunakan setiap saat ketika kita menggunakanConstraintLayout
?layout_constraintGuide_percent
?Guideline
hanyalah item yang tidak terlihat yang dapat Anda jangkar pandangan Anda.layout_constraintGuide_percent
adalah persentase pada induknya. Di sini 0,5 adalah 50% tinggiTextInputEditText
dan satuButton
. Saya ingin menempatkan mereka di tengah layar. Tetapi sampai sekarang ini bukan pastebin.com/iXYtuXHg di sini adalah screenshot dropbox.com/s/k7997q2buvw76cp/q.png?dl=0LinearLayout
dan di tengah.Ada cara yang lebih sederhana. Jika Anda menetapkan batasan tata letak sebagai berikut dan EditText Anda berukuran tetap, maka akan terpusat pada tata letak kendala:
Pasangan kiri / kanan memusatkan tampilan secara horizontal dan pasangan atas / bawah memusatkan pandangan secara vertikal. Ini karena ketika Anda mengatur kendala kiri, kanan atau atas, lebih besar dari tampilan itu sendiri, tampilan akan terpusat di antara dua kendala yaitu bias ditetapkan ke 50%. Anda juga dapat menggerakkan tampilan atas / bawah atau kanan / kiri dengan mengatur bias diri Anda. Mainkan sedikit dan Anda akan melihat bagaimana hal itu mempengaruhi posisi pandangan.
sumber
app:layout_constraintCenter_in="parent"
akan jauh lebih baik. Tapi seperti biasa Google tidak menyediakannya.Solusi dengan pedoman hanya berfungsi untuk kasus khusus ini dengan EditText baris tunggal. Untuk membuatnya bekerja untuk EditText multiline Anda harus menggunakan rantai "dikemas".
Begini tampilannya:
Anda dapat membaca lebih lanjut tentang menggunakan rantai di posting berikut:
sumber
Anda dapat memusatkan tampilan sebagai persentase dari ukuran layar.
Contoh ini menggunakan 50% lebar dan tinggi:
Ini dilakukan menggunakan ConstraintLayout versi 1.1.3. Jangan lupa untuk menambahkannya ke dependensi Anda di gradle, dan tingkatkan versinya jika ada versi baru di sana:
sumber
tambahkan tag ini di tampilan Anda
dan Anda dapat mengklik kanan dalam mode desain dan memilih pusat.
sumber
Anda dapat menggunakan layout_constraintCircle untuk tampilan tengah di dalam ConstraintLayout.
dengan constraintCircle ke induk dan jari-jari nol Anda dapat membuat tampilan Anda menjadi pusat induk.
sumber