Saya memiliki tata letak yang didefinisikan dalam XML. Berisi juga:
<RelativeLayout
android:id="@+id/item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Saya ingin mengembang RelativeView ini dengan file tata letak XML lainnya. Saya dapat menggunakan tata letak yang berbeda tergantung situasi. Bagaimana saya harus melakukannya? Saya mencoba berbagai variasi
RelativeLayout item = (RelativeLayout) findViewById(R.id.item);
item.inflate(...)
Tapi tidak ada yang bekerja dengan baik.
android
android-layout
layout-inflater
android-inflate
Michal Dymel
sumber
sumber
Anda mengembang sumber XML. Lihat dokumen LayoutInflater .
Jika tata letak Anda di mylayout.xml , Anda akan melakukan sesuatu seperti:
sumber
Meskipun terlambat menjawab, tetapi ingin menambahkan satu cara untuk mendapatkan ini
di mana
item
tata letak induk tempat Anda ingin menambahkan tata letak anak.sumber
R
sumber daya sebagai referensi ke objek, mereka hanyaint
s. Anda harus menggunakanfindViewById
meneruskannyaR
sumber daya, lalu ketik melemparkannya ke objek yang Anda inginkan. Kemudian Anda dapat menggunakannya dalam panggilan fungsi sepertiinflate
. (mis.ViewGroup item = (ViewGroup) findViewById(R.layout.activity_layout);
... maka Anda dapat menggunakanitem
seperti di atas.)RelativeLayout
daripadaViewGroup
ada dalam contoh saya di atas, karena Anda tidak dapat membuat instance kelas dasarViewGroup
. Aturan edit 5 menit membuat saya. lolSangat membantu untuk menambahkan ini, meskipun itu adalah posting lama, bahwa jika tampilan anak yang sedang digelembungkan dari xml akan ditambahkan ke tata letak viewgroup, Anda perlu memanggil mengembang dengan petunjuk tentang jenis viewgroup yang sedang berjalan untuk ditambahkan. Suka:
Metode mengembang cukup kelebihan beban dan menggambarkan bagian ini penggunaan dalam dokumen. Saya punya masalah di mana satu tampilan meningkat dari xml tidak menyelaraskan di induk dengan benar sampai saya membuat jenis perubahan ini.
sumber
Cara yang lebih sederhana adalah menggunakan
sumber
View.inflate()
adalah cara terbaik, tidak ada yang tidak perluLayoutInflater
ataugetSystemService(Context.LAYOUT_INFLATER_SERVICE)
atau semua gangguan itu! : Dtata letak inflasi
sumber
Jika Anda tidak dalam suatu kegiatan, Anda dapat menggunakan
from()
metode statis dariLayoutInflater
kelas untuk mendapatkanLayoutInflater
, atau meminta layanan dari metode konteksgetSystemService()
juga:(Saya tahu ini hampir 4 tahun yang lalu tetapi masih layak disebut)
sumber
Jika Anda ingin menambahkan satu tampilan beberapa kali, maka Anda harus menggunakannya
Jika Anda suka
dan
maka itu akan membuang pengecualian dari semua tampilan siap ditambahkan.
sumber
AttachToRoot Set ke True
Bayangkan saja kami menentukan tombol dalam file tata letak XML dengan lebar tata letak dan tinggi tata letak diatur ke match_parent.
Pada Tombol Ini Klik Acara Kita Dapat Mengatur Kode Berikut untuk Mengembang Layout pada Kegiatan Ini.
Semoga solusi ini bekerja untuk Anda.!
sumber
Coba kode ini:
sumber
Saya mengalami kesulitan dengan kesalahan ini, karena keadaan unik saya, tetapi akhirnya menemukan solusi.
Situasi saya: Saya menggunakan tampilan terpisah (XML) yang berisi
WebView
, lalu terbuka diAlertDialog
saat saya mengklik tombol di tampilan aktivitas utama saya. Tapi entah bagaimanaWebView
milik dari tampilan aktivitas utama (mungkin karena saya menarik sumber daya dari sini), jadi tepat sebelum saya menugaskannya keAlertDialog
(sebagai tampilan), saya harus meminta orang tua sayaWebView
, memasukkannya keViewGroup
, lalu hapus semua tampilan ituViewGroup
. Ini berhasil, dan kesalahan saya hilang..... nanti setelah saya memuat
WebView
....sumber
Jika Anda mencoba melampirkan tampilan anak ke RelativeLayout? Anda bisa melakukannya dengan mengikuti
sumber
Dengan Kotlin, Anda dapat menggunakan:
sumber
Saya telah menggunakan potongan kode di bawah ini untuk ini dan itu berhasil untuk saya.
sumber