¿Documentación incorrecta de Android sobre alias de diseño?
Me gustaría averiguar cómo reutilizar o diseños de "alias" con el código de repetición mínimo.
Parece que elDocumentación de Android sobre alias de diseño. Es incorrecto, y ciertamente parece inconsistente. Esta sección de la documentación muestra el siguiente archivo de diseño como ejemplo:
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
Si trato de compilar esto, me sale unAttribute is missing the Android namespace prefix
error. Incluso después de agregar el espacio de nombres a laresources
elemento, me saleerror: Error: String types not allowed (at 'type' with value 'layout').
En otro lugar en la documentación de Android, muestran una forma diferente y aparentemente invertida e incorrecta de los diseños de alias:
Para crear un alias para un diseño existente, use el elemento, envuelto en un<merge>
. Por ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<merge>
<include layout="@layout/main_ltr"/>
</merge>
Ejecutando esto resulta en el siguiente error en LogCatE/AndroidRuntime(1558): android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
. Así que este error parece reforzar el hecho de que este<include>
<merge>
La pareja debe ser un error, ya que requiere un padre innecesarioView
.
Por último está la<merge>
documentación, que parece contradecir la dirección anterior, sin mencionar la forma invertida de un nivel superior<merge><include/></merge>
.
Para evitar incluir un grupo de vistas tan redundante, puede utilizar el elemento como la vista raíz para el diseño reutilizable. Por ejemplo:
<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>