Android XML Layout'In '' Etiketi vardır Gerçekten İşe yarıyor mu?
≪include> kullanırken öznitelikleri geçersiz kılmak için kuramıyorum; benim Android düzeni dosyaları. Böcekler için aradığımda, Issue 2863 Reddedilen buldum:
< . p ^"etiketi (geçersiz parametreler düzeni asla işe yaramaz) kırık vardır"Romain bu test paketleri ve örnekler çalıştığını gösterir beri, bir şeyi yanlış yapıyor olmalıyım.
Projemi bu ÅŸekilde organize edilmiÅŸtir:
res/layout
buttons.xml
res/layout-land
receipt.xml
res/layout-port
receipt.xml
Bu buttons.xml böyle bir şey varsa:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button .../>
<Button .../>
</LinearLayout>
Ve dikey ve yatay receipt.xml files gibi bir ÅŸey:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
...
<!-- Overridden attributes never work. Nor do attributes like
the red background, which is specified here. -->
<include
android:id="@ id/buttons_override"
android:background="#ff0000"
android:layout_width="fill_parent"
layout="@layout/buttons"/>
</LinearLayout>
Neyi kaçırıyorum?
CEVAP
Ben sorunu buldum. İlk olarak, yalnızca bu plan işe yaramaz bu yüzden layout_* öznitelikleri geçersiz kılar. Bu belgelenmiş davranışı ve benim için bir gözetim basitçe.
Asıl sorun layoutinflater.java bulunur:
// We try to load the layout params set in the <include /> tag. If
// they don't exist, we will rely on the layout params set in the
// included XML file.
// During a layoutparams generation, a runtime exception is thrown
// if either layout_width or layout_height is missing. We catch
// this exception and set localParams accordingly: true means we
// successfully loaded layout params from the <include /> tag,
// false means we need to rely on the included layout params.
ViewGroup.LayoutParams params = null;
try {
params = group.generateLayoutParams(attrs);
} catch (RuntimeException e) {
params = group.generateLayoutParams(childAttrs);
} finally {
if (params != null) {
view.setLayoutParams(params);
}
}
≪include> etiketi içermezher ikisi deve layout_height, RuntimeException ve sessizce, herhangi bir günlük ifadesi olmadan bile ele oluÅŸur. layout_width.
Çözüm her zaman kullanırken hem layout_width ve layout_height vardır ve eğer layout_* niteliklerden herhangi birini geçersiz kılmak isterseniz lt;include > etiketi.
Benim örnek olarak değiştirmeniz gerekir:
<include
android:id="@ id/buttons_override"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/buttons"/>
İmageView android XML layout=layout_he...
Nasıl 'dosyalarda grup' gerç...
's "araçlar:bağlam" And...
ASP.Net MVC 3 Razor: Head etiketi için...
Android Layout klasörü alt klasörler i...