Falsche Android-Dokumentation zu Layout-Aliasen?

Ich möchte herausfinden, wie Layouts mit dem geringsten Boilerplate-Code wiederverwendet oder "alias" werden können.

Es scheint, dass dieAndroid-Dokumentation zu Layout-Aliasen ist falsch und erscheint sicherlich inkonsistent. Dieser Dokumentationsabschnitt zeigt als Beispiel die folgende Layoutdatei:

<resources>
    <item name="main" type="layout">@layout/main_twopanes</item>
</resources>

Wenn ich versuche, dies zu kompilieren, erhalte ich eineAttribute is missing the Android namespace prefix Error. Auch nach dem Hinzufügen des Namespace zumresources Element, ich versteheerror: Error: String types not allowed (at 'type' with value 'layout').

An anderer Stelle in der Android-Dokumentationzeigen sie einen anderen und scheinbar umgekehrten und falschen Weg zu Alias-Layouts:

Um einen Alias ​​für ein vorhandenes Layout zu erstellen, verwenden Sie das Element, das in ein eingeschlossen ist<merge>. Zum Beispiel:

<?xml version="1.0" encoding="utf-8"?>
<merge>
    <include layout="@layout/main_ltr"/>
</merge>

Wenn Sie dies ausführen, tritt in LogCat der folgende Fehler aufE/AndroidRuntime(1558): android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true. Dieser Fehler scheint also die Tatsache zu verstärken, dass dies<include> <merge> Paar muss ein Fehler sein, weil es ein unnötiges Elternteil erfordertView.

Endlich gibt es das<merge> Dokumentation, was der früheren Richtung zu widersprechen scheint, ohne die umgekehrte Form einer obersten Ebene zu erwähnen<merge><include/></merge>.

Um das Einschließen einer solchen redundanten Ansichtsgruppe zu vermeiden, können Sie stattdessen das Element als Stammansicht für das wiederverwendbare Layout verwenden. Zum Beispiel:

<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>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage