2011-07-12 22 views
9

Son zamanlarda birleştirme hakkında bilgi edindim ve son zamanları da dahil et, ve ben de cevabı çözemediğim bir sorum var. Birden çok düzene eklemek istediğim bir başlık bileşenini tanımlayan bir düzenim olduğunu varsayalım. Bununla birlikte, başlığı değiştirmek veya her bir başlığın simgesi kullanımını değiştirmek istiyorum.İç içe yerleştirilmiş nitelikleri değiştirilmiş bir Düzen üzerinde değiştirme

<RelativeLayout android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       style="@style/menu_header"> 

    <Button android:id="@+id/backButton" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/button" 
      android:text="@string/back"/> 

    <TextView style="@style/headerTitle" 
       android:layout_centerInParent="true" 
       android:text="${title}" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
</RelativeLayout> 

Sonra kullanan diğer düzenleri bu şunları içerebilir: Örneğin: Aşağıdaki düzeni var demek

<LinearLayout ...> 
    <include android:id="@+id/searchHeader" layout="@layout/shared_header" title="Search"/> 
    ... 
</LinearLayout> 

Ben herhangi layout_ değiştirebilir biliyorum * kök elemanın niteliği, ama ben can Bu örnekte "başlık" gibi düzende yer alan diğer öznitelikler, kendi alt sınıfımı oluşturmak zorunda kalmadan, varoşlarda/kaynaklarda vb.

Böyle bir şeye sahip olmak, yeniden kullanılabilir görünümler oluşturmayı çok daha kolay hale getirir, ancak birleştirme + dahil etme işleminin yapabileceğini söyleyen hiçbir kanıt bulamıyorum.

+0

Bu görünümlerin içeriğini değiştirmek isterseniz, bu görünümlerden oluşan özel bir Görünüm kullanmalısınız. Dahil olan şey, başka bir yerde bir görünüm/görüntüleme grubunu kopyalamak/yapıştırmak istediğinizde daha fazla bir olanaktır. – Gregory

+0

Ancak, yalnızca aynı kodu kopyalayıp yapıştırabiliyorsanız sınırlı kullanım içindir. Özel görünümler, yazara çok daha fazla ek yük, özel stil seçenekleri ekleyerek, bir görünümü alt sınıfı oluşturmak için kod gerektirir. Yaptığım her şey, iç içe geçmiş öğelerin bazı özelliklerinin ince ayarını yapmaktır. Bu, tüm filin tamamını yemeden yapılabilecek gibi görünüyor. – chubbsondubs

+0

Ben de dahil olmak üzere hızlı "öğretici" okuyun (http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html), ve oldukça açık görünüyor ki sadece özellikle 2 farklı düzende (portre ve manzara) ortak bir "alt düzen" eklediğinizde basit bir kopyalama/yapıştırma anlamına gelir. Her şeye rağmen fikrinizi oldukça güzel bulsam da:/ – Gregory

cevap

5

Yanıt hayır. Ne yazık ki, Android o kadar güçlü değil. ViewGroup'un kendi uzantınızı oluşturmalı ve daha fazla kod yazmalısınız.

+0

bunun nasıl yapılacağına dair bir örnek verebilir misiniz? – jpotts18

+0

Hayır, kendi özel bileşeninizi yazmak, bir yorumda izin verilenden daha fazla çaba ve alan gerektirir. Yalnızca düzen dosyalarını kullanarak tanımladığım şeyi yapamazsın. Yeniden kullanılabilecek ve bu şekilde parametrelenebilecek bir şey oluşturmak istiyorsanız ViewGroup'u genişleterek kendi müşteri bileşeninizi yazmanız gerekir. – chubbsondubs

+0

Ben bir tane deneyeceğim. Teşekkürler! – jpotts18

İlgili konular