Mari kita bayangkan kita sedang mengembangkan komponen senyawa berdasarkan LinearLayout. Jadi, kami membuat kelas seperti ini:
public class SomeView extends LinearLayout {
public SomeView(Context context, AttributeSet attrs) {
super(context, attrs);
setOrientation(LinearLayout.VERTICAL);
View.inflate(context, R.layout.somelayout, this);
}
}
Jika kami akan menggunakan LinearLayout
sebagai root somelayout.xml
, kami akan memiliki tingkat tampilan tambahan, jadi kami menggunakan tag gabungan:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some other text"/>
</merge>
Tapi di tab Preview di IDE gabungan selalu bertindak sebagai FrameLayout, dan kita akan melihat sesuatu seperti itu:
(Ini adalah Android Studio, Intellij IDEA sama saja, tentang Eclipse saya tidak tahu)
Pratinjau mempercepat pengembangan tata letak, sedih kehilangan bantuan besar bahkan untuk beberapa tata letak. Mungkin ada cara untuk menentukan, bagaimana Pratinjau harus menafsirkan merge
tag dalam tata letak tertentu?
Jawaban:
Ada atribut tools parentTag baru ( ditambahkan di Android Studio 2.2 ) yang dapat Anda gunakan untuk menentukan tipe tata letak untuk tag gabungan, yang akan membuat tata letak dirender dengan benar dalam pratinjau editor tata letak.
Jadi gunakan contoh Anda:
Catatan : Keduanya
android:layout_width
danandroid:layout_height
harus ditentukan agar tata letak ditampilkan dengan benar di editor.sumber
<com.yourpackage.yourcustomview id="@+id/my_cust_view" android:layout_width="match_parent" android:layout_height="match_parent"/>
Sunting: Jawaban yang kedaluwarsa. Lihat jawaban oleh starkej2.
Android Studio 0.5.8 menambahkan dukungan untuk alat: showIn. Dengan menggunakannya, Anda dapat melihat pratinjau <menggabungkan> tata letak.
http://tools.android.com/recent/androidstudio058 dirilis
layout / layout_merge.xml dengan alat: showIn:
layout / simple_relativelayout.xml dengan menyertakan:
sumber
Juga dimungkinkan menggunakan kelas khusus sebagai induk alih-alih gabungan seperti
Dan kemudian langsung mengembang tata letak ini dan melemparkan tampilan hasil
SomeView
. Studio Android akan langsung memeriksa kelas indukSomeView
dan menangani pratinjau sukaLinerLayout
. Anda dapat menggunakanonFinishInflate()
metode dalamSomeView
untuk mengikat tampilan olehfindViewById()
. Manfaat dari solusi ini adalah Anda dapat menempatkan semua definisi tata letak atau definisi gaya langsung ke file tata letak, Anda tidak dapat menggunakan metode sepertisetOrientation()
dalam kode.sumber