Nieprawidłowa dokumentacja systemu Android dotycząca aliasów układu?
Chciałbym dowiedzieć się, jak ponownie wykorzystać układy „aliasów” z najmniejszym kodem standardowym.
Wydaje się, żeDokumentacja systemu Android dotycząca aliasów układu jest niepoprawna i na pewno wydaje się niespójna. Ta sekcja dokumentacji przedstawia następujący plik układu jako przykład:
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
Jeśli spróbuję to skompilować, dostanęAttribute is missing the Android namespace prefix
błąd. Nawet po dodaniu przestrzeni nazw doresources
element, dostajęerror: Error: String types not allowed (at 'type' with value 'layout').
Gdzie indziej w dokumentacji systemu Android, pokazują inny i pozornie odwrócony i niepoprawny sposób aliasów:
Aby utworzyć alias do istniejącego układu, użyj elementu owiniętego w<merge>
. Na przykład:
<?xml version="1.0" encoding="utf-8"?>
<merge>
<include layout="@layout/main_ltr"/>
</merge>
Uruchomienie tego powoduje następujący błąd w LogCatE/AndroidRuntime(1558): android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
. Więc ten błąd zdaje się wzmacniać fakt, że to<include>
<merge>
para musi być błędem, ponieważ wymaga niepotrzebnego rodzicaView
.
Wreszcie jest<merge>
dokumentacja, co wydaje się przeczyć temu pierwszemu kierunkowi, nie wspominając o odwróconej formie najwyższego poziomu<merge><include/></merge>
.
Aby uniknąć dołączania takiej nadmiarowej grupy widoków, możesz zamiast tego użyć elementu jako widoku głównego dla układu wielokrotnego użytku. Na 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>