studio reuse other example change android layout android-layout include

reuse - layout include android



Android: ¿Cómo incluir dinámicamente un diseño XML? (2)

Podría intentar usar una ViewStub y simplemente cambiar qué diseño se ViewStub programáticamente.

Esta respuesta analiza el uso de un ViewStub.

Quiero descomponer mi UI en varios diseños XML. El primero sería el diseño principal, y los otros serían los diseños de contenido.

Me gustaría poder establecer qué content_layout se debe incluir dinámicamente en el tiempo de ejecución, por lo que no quiero establecer un "layout="@+layout/content_layout" en mi archivo XML.

Aquí están mis diseños:

main_layout.xml:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="600dp" android:layout_height="800dp" > <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" /> <include /> <!-- I WANT TO INCLUDE MY CONTENT HERE --> <Button android:id="@+id/cancelButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Cancel" /> </RelativeLayout>

content_layout.xml:

<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/whatever" android:layout_height="wrap_content" android:layout_width="fill_parent" />

content_layout2.xml:

<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/whatever2" android:layout_height="wrap_content" android:layout_width="fill_parent" />

¿Cómo puedo hacer eso?

¡Gracias!


<RelativeLayout android:id="@+id/rl" ...

En tu código:

// get your outer relative layout RelativeLayout rl = (RelativeLayout) findById(R.id.rl); // inflate content layout and add it to the relative layout as second child // add as second child, therefore pass index 1 (0,1,...) LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); rl.addView(1, layoutInflater.inflate(R.layout.content_layout, this, false) );