Chciałbym dowiedzieć się, jak ponownie użyć lub "alias" układów z najmniejszą liczbą kodów.Nieprawidłowa dokumentacja systemu Android dotycząca aliasów układu?
Wydaje się, że Android documentation about layout aliases jest błędna, a na pewno pojawi się niespójne. Ta część dokumentacji przedstawia poniższy plik układu jako przykład:
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
Gdy próbuję skompilować ten, pojawia się błąd Attribute is missing the Android namespace prefix
. Nawet po dodaniu nazw do elementu resources
, mam error: Error: String types not allowed (at 'type' with value 'layout').
Elsewhere in the Android documentation, pokazują inną i pozornie odwrócony i nieprawidłowy sposób do układów Alias:
Aby utworzyć alias do istniejącego układu, użyj element, zawinięty w
<merge>
. Na przykład:<?xml version="1.0" encoding="utf-8"?> <merge> <include layout="@layout/main_ltr"/> </merge>
Running skutkuje następującym błędem w LogCat E/AndroidRuntime(1558): android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
. Tak więc ten błąd zdaje się wzmacniać fakt, że ta para musi być błędem, ponieważ wymaga niepotrzebnego rodzica .
Wreszcie jest <merge>
documentation, który wydaje się być sprzeczny z poprzednim kierunkiem, nie wspominając o odwróconej formie najwyższego poziomu <merge><include/></merge>
.
Aby zapobiec tym taki redundantne grupy widoku, można zamiast tego użyć elemencie w widoku głównym na układ wielokrotnego użytku. Dla przykład:
<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>
Sieć [Pierwsza metoda] (http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters) wydaje się skompilować i działa dobrze dla mnie. Czy masz zainstalowane najnowsze narzędzia SDK? – Joe
@Joy dziękuję za zweryfikowanie tego! W końcu nie przeczytałem dokładnie instrukcji. Zrobiłem to, co myślałem, że powinienem zrobić - umieść plik layout.xml w folderze 'layout-large', a nie' values-large'. –