Android küçük, yeniden kullanılabilir ve etkileşimli öğeler sağlamak için çeşitli widget'lar sunsa da
özel bir düzen gerektiren daha büyük bileşenleri de yeniden kullanmanız gerekebilir. Etkili bir şekilde yeniden kullanmak için
tam düzenleri yerleştirmek için <include>
ve <merge>
etiketlerini kullanın
bir düzen içinde çalışır.
Bu, evet veya hayır düğmesi paneli veya özel ilerleme durumu gibi karmaşık düzenler oluşturmanıza olanak tanır.
açıklama metnini içeren çubuk. Bu, uygulamanızın Google'a ait olmayan, ancak
birden fazla düzende yaygındır, bunları ayrı ayrı yönetin ve her düzene ekleyin. Bu sırada
özel bir kod yazarak bağımsız kullanıcı arayüzü bileşenleri
View
, bunu daha kolay bir şekilde yapmak için
yeniden kullanmanız gerekecek.
Yeniden kullanılabilir bir düzen oluşturun
Yeni bir XML dosyası oluşturarak ve yeniden kullanmak istediğiniz düzeni tanımlayarak başlayın. Örneğin,
Örneğin, aşağıda her etkinliğe eklenecek bir başlık çubuğu tanımlayan bir düzen verilmiştir
(titlebar.xml
):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/titlebar_bg" tools:showIn="@layout/activity_main" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/gafricalogo" /> </FrameLayout>
Kök View
, her bir
bu düzeni eklemeyi düşündüğünüz bir sayfa düzeni seçin.
<include> etiket
Yeniden kullanılabilir bileşeni eklemek istediğiniz düzenin içine
<include>
etiketi. Örneğin, şuradaki başlık çubuğunu içeren bir düzen verilmiştir:
önceki örneğe bakalım:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/app_bg" android:gravity="center_horizontal"> <include layout="@layout/titlebar"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/hello" android:padding="10dp" /> ... </LinearLayout>
Ayrıca, tüm düzen parametrelerini geçersiz kılabilirsiniz. Herhangi bir android:layout_*
özelliklerini kullanarak, dahil edilen düzenin kök görünümünün
<include>
etiketi. Bu, aşağıdaki örnekte gösterilmektedir:
<include android:id="@+id/news_title" android:layout_width="match_parent" android:layout_height="match_parent" layout="@layout/title"/>
Ancak <include>
etiketini kullanarak düzen özelliklerini geçersiz kılmak isterseniz
ayrıca, android:layout_height
ve android:layout_width
değerlerini geçersiz kılmak için
diğer düzen özelliklerinin geçerli olduğunu unutmayın.
<birleştirme> işlevini kullanma etiket
<merge>
etiketi, görünüm hiyerarşinizdeki gereksiz görünüm gruplarını ortadan kaldırmaya yardımcı olur
dahil edilir. <merge>
için kullanım alanlarından biri,
bir ViewGroup
genişleterek özel görünüm uygulayın.
Örneğin, ana düzeniniz dikey
LinearLayout
içinde iki
art arda gelen görünümler birden çok düzende yeniden kullanılabilir. Ardından, bu görünümü yerleştirdiğiniz yeniden kullanılabilir düzen
iki görünümün kendi kök görünümünün olması gerekir. Ancak kök olarak başka bir LinearLayout
kullanılması
bir dikey LinearLayout
oluşturur.
LinearLayout
İç içe yerleştirilmiş LinearLayout
işlevi yoktur ve yavaş çalışır
aşağı tüketirsiniz.
Bunun yerine, özel bir görünüm oluşturmak ve bir düzen XML'si kullanmak için LinearLayout
öğesini genişletebilirsiniz
ve çocuk görüntülemelerini açıklayın. XML'de en üstteki etiket <merge>
LinearLayout
, aşağıdaki örnekte gösterildiği gibi:
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge>
Bu düzeni <include>
kullanarak başka bir düzene eklediğinizde
etiketiyle birlikte kullanıldığında, sistem <merge>
öğesini yoksayar ve iki düğmeyi yerleştirir
<include>
etiketinin yerine doğrudan düzen içinde gösterilir.
<include>
hakkında daha fazla bilgi için bkz.
Düzen kaynağı.