xml - inside - android viewstub
Ejemplo simple de uso de<merge> y<include> en diseƱos XML de Android (5)
Tengo curiosidad sobre las etiquetas <merge>
y <include>
en los diseños XML de Android. He leído dos tutoriales, pero aún no he encontrado un uso de ejemplo simple.
Sería feliz si alguien pudiera dar ese ejemplo o darle un puntero a uno.
Hay un HOWTO simple de diseño XML de Android <include /> HOWTO que también explica un error común en http://www.coboltforge.com/2012/05/tech-stuff-layout/ . Eso puede ayudar ...
Tome un ejemplo:
Tengo dos etiquetas <EditText>
y <ListView >
vienen con más de una UI. Así que creé un archivo XML como se indica a continuación para incluirlo en todas las UI.
<?xml ...>
<EditText ... />
<ListView ... />
El XML anterior no es XML válido ya que no tiene un elemento raíz. Por lo tanto, se necesita un elemento raíz solo por el bien de XML. <merge>
es la solución que se muestra a continuación:
<?xml ...>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<EditText ... />
<ListView ... />
</merge>
id no pega el código; de lo contrario, los parámetros de diseño relativos habrían funcionado. Hace algunos procesos diferentes
<merge>
etiqueta <merge>
se usa para mitigar el número de niveles para aumentar el rendimiento de los diseños de representación. la etiqueta se usa con la etiqueta <include>
perfectamente juntas.
Tomemos un ejemplo, tenemos un diseño de inicio de sesión y lo usamos para más de uno en el alcance de nuestra aplicación. Mientras usamos tag para mostrar login_layout, podemos usar y podemos escapar de un nivel.
También te aconsejo que leas los trucos sobre los diseños. http://android-developers.blogspot.com.tr/2009/03/android-layout-tricks-3-optimize-by.html
login_form.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Login form -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email..."
android:inputType="textEmailAddress"
android:maxLines="1"
android:singleLine="true"
android:visibility="visible" />
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password.."
android:imeActionId="@+id/login"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true"
android:text="1337"
android:visibility="visible" />
<Button
android:id="@+id/sign_in_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="16sp"
android:paddingLeft="32sp"
android:paddingRight="32sp"
android:text="Login"
android:visibility="visible" />
</LinearLayout>
example_layout.xml (cualquier diseño que deseemos incluir login_form.xml)
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<include layout="@layout/login_form" />
</merge>
Podemos ver la jerarquía de niveles
some_activity.xml :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
// some views
<include layout="@layout/view_part"/>
// probably more views
</LinearLayout>
view_part.xml :
<merge xmlns:android="http://schemas.android.com/apk/res/android">
// the views to be merged
</merge>