Gagasan untuk menetapkan batasan pemrograman bisa melelahkan. Solusi di bawah ini akan berfungsi untuk tata letak apa pun, apakah kendala, linier, dll. Cara terbaik adalah dengan menetapkan placeholder yaitu FrameLayout dengan batasan yang tepat (atau penempatan yang tepat di tata letak lain seperti linier) pada posisi di mana Anda akan mengharapkan tampilan yang dibuat secara program. memiliki.
Yang perlu Anda lakukan adalah mengembang tampilan secara pemrograman dan itu sebagai anak ke FrameLayout dengan menggunakan addChild()metode. Kemudian selama runtime tampilan Anda akan meningkat dan ditempatkan di posisi yang tepat. Sesuai rekomendasi Android, Anda hanya perlu menambahkan satu childView ke FrameLayout [tautan] .
Di sini akan terlihat seperti apa kode Anda, seandainya Anda ingin membuat TextView secara terprogram pada posisi tertentu:
Langkah 1:
Di tata letak Anda yang akan berisi tampilan yang akan meningkat, tempatkan FrameLayout di posisi yang benar dan beri id, katakanlah, "wadah".
Langkah 2
Buat tata letak dengan elemen root sebagai tampilan yang ingin Anda kembang saat runtime, panggil file tata letak sebagai "textview.xml":
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
</TextView>
BTW, atur tata letak-params dari frameLayout Anda untuk wrap_content selalu lain tata letak frame akan menjadi sebesar induknya yaitu aktivitas yaitu layar ponsel.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Jika tidak disetel, karena tampilan anak dari bingkai, secara default, pergi ke kiri atas tata letak bingkai, maka pandangan Anda hanya akan terbang ke kiri atas layar.
Langkah 3
Dalam metode oncreate Anda, lakukan ini:
FrameLayout frameLayout = findViewById(R.id.container);
TextView textView = (TextView) View.inflate(this, R.layout.textview, null);
frameLayout.addView(textView);
(Perhatikan bahwa pengaturan parameter terakhir findViewByIdke nulldan menambahkan tampilan dengan memanggil addView()tampilan wadah (frameLayout) sama dengan hanya melampirkan tampilan meningkat dengan mengirimkan trueparameter ke-3 findViewById(). Untuk lebih lanjut, lihat ini .)