Saya butuh bantuan ConstraintSet
. Tujuan saya adalah mengubah batasan tampilan dalam kode, tetapi saya tidak tahu cara melakukannya dengan benar.
Saya memiliki 4 TextView
s dan satu ImageView
. Saya perlu menetapkan ImageView
batasan ke salah satu TextView
s.
check_answer4 = (TextView) findViewById(R.id.check_answer4);
check_answer1 = (TextView) findViewById(R.id.check_answer1);
check_answer2 = (TextView) findViewById(R.id.check_answer2);
check_answer3 = (TextView) findViewById(R.id.check_answer3);
correct_answer_icon = (ImageView) findViewById(R.id.correct_answer_icon);
Jika jawaban pertama benar, saya perlu menyetel batasan ImageView
menjadi
app:layout_constraintRight_toRightOf="@+id/check_answer1"
app:layout_constraintTop_toTopOf="@+id/check_answer1"
Jika jawaban kedua benar, saya perlu menetapkan batasan ImageView
menjadi
app:layout_constraintRight_toRightOf="@+id/check_answer2"
app:layout_constraintTop_toTopOf="@+id/check_answer2"
Dan seterusnya.
android
android-layout
android-view
android-constraintlayout
Pelatih Besar
sumber
sumber
Jawaban:
Untuk menyetel batasan tampilan gambar ke:
menggunakan:
Untuk menyetel batasan tampilan gambar ke:
menggunakan:
sumber
.clone(constraintLayout)
apa variabel ini dan dari mana saya mendapatkannya?ConstraintLayout constraintLayout = findViewById(R.id.parent_layout);
Asumsikan kita ingin mengubah batasan selama runtime, membuat tombol1 menjadi sejajar dengan tombol2 saat diklik:
Kemudian, memiliki tata letak ini:
Kami dapat melakukan berikut ini:
sumber
layoutParams
danval
? Apakah ini Java?ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) button1.getLayoutParams();
button1.requestLayout()
yang kemudian akan memeriksa instanceLayoutParams
yang sudah kita mutasi.requestLayout()
panggilan dengansetLayoutParams()
dan kemudian berhasil. Cukup bermutasilayoutParams
dan meminta tata letak sendiri sepertinya tidak berhasil.Di Kotlin, Anda cukup memperluas
ConstraintSet
kelas dan menambahkan beberapa metode untuk memanfaatkan dsl di Kotlin dan menghasilkan kode yang lebih mudah dibaca. Seperti iniDan gunakan seperti ini
sumber
Saya tahu jawaban saya sangat terlambat, namun saya yakin itu akan membantu orang lain yang sering mampir di sini. Artikel ini bukan milik saya tetapi saya membuat beberapa perubahan, karena itu, Anda harus berusaha untuk melihat artikel lengkap di sini
Set Batasan
Kunci untuk bekerja dengan kumpulan batasan dalam kode Java adalah kelas ConstraintSet. Kelas ini berisi berbagai metode yang memungkinkan tugas-tugas seperti membuat, mengonfigurasi, dan menerapkan batasan ke instance ConstraintLayout. Selain itu, batasan saat ini untuk instance ConstraintLayout dapat disalin ke dalam objek ConstraintSet dan digunakan untuk menerapkan batasan yang sama ke tata letak lain (dengan atau tanpa modifikasi).
Instance ConstraintSet dibuat seperti objek Java lainnya:
Setelah kumpulan batasan dibuat, metode dapat dipanggil pada instance untuk melakukan berbagai tugas. Kode berikut mengonfigurasi kumpulan batasan di mana sisi kiri tampilan Tombol terhubung ke sisi kanan tampilan EditText dengan margin 70dp:
Menerapkan Batasan ke Layout Setelah set pembatas dikonfigurasi, itu harus diterapkan ke instance ConstraintLayout sebelum diterapkan. Satu set batasan diterapkan melalui panggilan ke metode applyTo (), meneruskan referensi ke objek layout yang setelannya akan diterapkan:
Ada lebih banyak hal yang dapat Anda lakukan dengan file
ConstraintSet
API, Menyetel bias horizontal dan vertikal, memusatkan secara horizontal dan vertikal, memanipulasi Rantai, dan banyak lagi.Bacaan yang sangat bagus.
Sekali lagi, ini hanyalah adaptasi.
sumber
Selain jawaban azizbekian , izinkan saya menunjukkan dua hal:
params.startToEnd = button2.id
params.startToEnd = ConstraintLayout.LayoutParams.UNSET
sumber