Documentação incorreta do Android sobre aliases de layout?
Gostaria de descobrir como reutilizar ou "alias" layouts com o menor código clichê.
Parece que oDocumentação do Android sobre aliases de layout está incorreto e certamente parece inconsistente. Esta seção da documentação mostra o seguinte arquivo de layout como um exemplo:
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
Se eu tentar compilar isso, recebo umaAttribute is missing the Android namespace prefix
erro. Mesmo depois de adicionar o namespace aoresources
elemento, eu receboerror: Error: String types not allowed (at 'type' with value 'layout').
Em outro lugar na documentação do Android, eles mostram uma maneira diferente e aparentemente invertida e incorreta de alias layouts:
Para criar um alias para um layout existente, use o elemento, agrupado em um<merge>
. Por exemplo:
<?xml version="1.0" encoding="utf-8"?>
<merge>
<include layout="@layout/main_ltr"/>
</merge>
Executar isso resulta no seguinte erro no LogCatE/AndroidRuntime(1558): android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
. Então esse erro parece reforçar o fato de que isso<include>
<merge>
par deve ser um erro, porque requer um pai desnecessárioView
.
Por fim, há o<merge>
documentação, o que parece contradizer a direção anterior, não fazendo menção à forma invertida de um nível superior<merge><include/></merge>
.
Para evitar a inclusão de um grupo de visualizações tão redundante, você pode usar o elemento como a visualização raiz do layout reutilizável. Por exemplo:
<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>