Bagaimana cara menambah dan menghapus tampilan seperti TextView
s dari aplikasi Android seperti pada layar kontak Android stok asli di mana Anda menekan ikon kecil di sisi kanan bidang dan menambahkan atau menghapus bidang yang terdiri dari a TextView
dan editTextView
(dari apa Saya dapat melihat).
Ada contoh bagaimana mencapai ini?
android
android-view
Jonathan
sumber
sumber
Saya membutuhkan fitur yang sama persis seperti yang dijelaskan dalam pertanyaan ini. Ini solusi dan kode sumber saya: https://github.com/laoyang/android-dynamic-views . Dan Anda dapat melihat video demo beraksi di sini: http://www.youtube.com/watch?v=4HeqyG6FDhQ
Tata Letak
Pada dasarnya Anda akan memiliki dua file tata letak xml:
TextEdit
, a,Spinner
danImageButton
untuk penghapusan.Kontrol
Dalam kode Java, Anda akan menambah dan menghapus tampilan baris ke dalam container secara dinamis, menggunakan inflate, addView, removeView, dll. Ada beberapa kontrol visibilitas untuk UX yang lebih baik di aplikasi Android stok. Anda perlu menambahkan TextWatcher untuk tampilan EditText di setiap baris: saat teks kosong Anda perlu menyembunyikan tombol Add new dan tombol delete. Dalam kode saya, saya menulis
void inflateEditRow(String)
fungsi pembantu untuk semua logika.Trik lainnya
android:animateLayoutChanges="true"
dalam xml untuk mengaktifkan animasiKode sumber
Kode Java dari aktivitas utama (Ini menjelaskan semua logika, tetapi beberapa properti disetel dalam file layout xml, silakan merujuk ke sumber Github untuk solusi lengkap):
sumber
Ini adalah cara umum saya:
sumber
Hai Anda dapat mencoba cara ini dengan menambahkan tata letak relatif dan daripada menambahkan tampilan teks di dalamnya.
sumber
Kelas ViewGroup menyediakan API untuk manajemen tampilan anak dalam waktu proses, yang memungkinkan untuk menambahkan / menghapus tampilan juga.
Beberapa tautan lain tentang subjek:
Android, tambahkan tampilan baru tanpa Tata Letak XML
Tutorial Tata Letak Waktu Proses Android
http://developer.android.com/reference/android/view/View.html
http://developer.android.com/reference/android/widget/LinearLayout.html
sumber
Cukup gunakan
myView.setVisibility(View.GONE);
untuk menghapusnya sepenuhnya. Tetapi jika Anda ingin memesan ruang yang ditempati di dalam penggunaan induknyamyView.setVisibility(View.INVISIBLE);
sumber
View.INVISIBLE
hanya menyembunyikan tampilan. TheOnClickListener
(jika set) masih akan merespon pengguna jika mereka menyentuh daerah di mana pandangan hadir (tapi tidak terlihat). Jadi idealnya Anda juga harus menghapusOnClickListeners
dalam kasus seperti ituUntuk Menambahkan Tombol
Untuk melepas tombol
sumber
Hai, Pertama tulis kelas Aktivitas. Kelas berikut memiliki Nama kategori dan tombol tambah kecil. Ketika Anda menekan tombol add (+), itu menambahkan baris baru yang berisi EditText dan ImageButton yang melakukan penghapusan baris.
2. Tulis Layout xml seperti yang diberikan di bawah ini.
sumber
// Sekarang tambahkan xml main
// sekarang tambahkan file view xml ..
sumber
Solusi Ekstensi Kotlin
Tambahkan
removeSelf
ke panggilan langsung pada tampilan. Jika dilampirkan ke orang tua, itu akan dihapus. Ini membuat kode Anda lebih deklaratif, dan dengan demikian dapat dibaca.Berikut adalah 3 opsi cara menambahkan tampilan secara terprogram ke file
ViewGroup
.sumber