Şimdi çeşitli düzeylerde kullanmaktan dönüştürerek benim düzenleri daha verimli hale getirmek için birkaç gün çalışıyorlar iç içe LinearLayouts
birine RelativeLayout
ve ben cenneti için geçici bir çözüm bulmak mümkün değil birkaç sorun rastlamak ...
Android yeni başlayanlar grubunu ve bu siteyi araştırdım ve sorunu çözmeme yardımcı olacak hiçbir şey bulamadım.
Düzenleri birleştirme ile birleştirebileceğiniz ve etiket ekleyebileceğiniz bloglardan birinde okudum. Yani, sahip olduğum şey, bir RelativeLayout
kök öğesi olan bir ana düzen dosyası . Bunun içinde, her biri kök için bir birleştirme öğesine sahip 5 farklı xml düzen dosyasına başvuran 5 etiket ekledim (tüm birleştirme dosyalarım, içlerindeki kimlikler dışında aynıdır).
Yerleşim kodumun basitleştirilmiş bir sürümünü yayınladıktan sonra açıklayacağım iki problemle karşılaşıyorum:
Örnek Ana Düzen Dosyası:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/translucent_gray" >
<include
android:id="@+id/running_gallery_layout_id"
layout="@layout/running_gallery_layout" />
<include
android:id="@+id/recent_gallery_layout_id"
layout="@layout/recent_gallery_layout"
android:layout_below="@id/running_gallery_layout_id" />
<include
android:id="@+id/service_gallery_layout_id"
layout="@layout/service_gallery_layout"
android:layout_below="@id/recent_gallery_layout_id" />
<include
android:id="@+id/process_gallery_layout_id"
layout="@layout/process_gallery_layout"
android:layout_below="@id/service_gallery_layout_id" />
</RelativeLayout>
Dahil edilen birleştirme dosyası örneği:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
style="@style/TitleText"
android:id="@+id/service_gallery_title_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="@string/service_title" />
<Gallery
android:id="@+id/service_gallery_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_below="@id/service_gallery_title_text_id" />
<TextView
style="@style/SubTitleText"
android:id="@+id/service_gallery_current_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/service_gallery_title_text_id"
android:layout_above="@id/service_gallery_id" />
</merge>
İki sorunla karşılaşıyorum:
1) android:layout_*
İçerme etiketinde kullanıldığında öznitelikler göz ardı ediliyor gibi görünüyor ve birleştirilmiş tüm düzenler birbirinin üstünde görüntüleniyor. Bu gönderiye göre ( http://developer.android.com/resources/articles/layout-tricks-reuse.html ) " etiketle herhangi bir android:layout_*
özellik kullanılabilir <include />
"
2) Bu çalışmayı yapamadığım android:layout_below
için, TextView
her bir birleştirme düzeni dosyasındaki ilk öğeye bir öznitelik eklemeyi denemeye karar verdim , yani her bir birleştirme dosyası, başka bir birleştirme düzeni dosyasından bir kimliği referans alacaktır ... Çoğunlukla bu gerçekten çalıştı ve düzenim iyi görünüyor. Ancak, android:layout_below
özniteliklerden birinde belirlediğim kimliği bulamadığını söyleyen bir hata alıyorum ... Doğru olduklarından emin olmak için kimlikleri iki ve üç kez kontrol ettim. İşin tuhaf yanı, AutoFill
özniteliği ilk etapta özniteliğe koymak için özelliği kullanmış olmamdır .
Herhangi birinin herhangi bir önerisi veya geçici çözümü varsa, bunları denemekten çok mutlu olacağım. Ayrıca, birisi benim için 5 yerine sadece bir birleştirme xml düzen dosyasına sahip olmanın bir yolunu düşünebilirse, bu çok takdir edilecektir. Bunu yapmanın bir yolunu bulamadım çünkü çalışma zamanında birleştirme düzen dosyalarındaki her bir öğeye erişmem gerekiyor ...