studio - personalizar activity android
¿Cómo puedo cambiar el diseño XML incluido a otro diseño en código java? (3)
¿Ha intentado obtener la instancia de la vista actual del xml que ha incluido el otro xml y usar findViewById()
? View v es el primer diseño y en contra de esta vista, usa .findViewById()
tengo un problema. Desarrollo aplicaciones de Android.
Incluí el segundo diseño al primer diseño como este:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="clip_horizontal"
android:layout_alignParentLeft="true"
android:id="@+id/rlMenu"
>
<Button
android:id="@+id/bMusteriler"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Musteriler"
android:textSize="45dp"
android:layout_alignParentLeft="true"
/>
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_toRightOf="@id/rlEkranlar"
>
<include
android:id="@+id/include1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/ikinci" />
</RelativeLayout>
</RelativeLayout>
El problema es ¿cómo puedo cambiar el diseño incluido al hacer clic en un botón (en código java)?
Lo siento por mi ingles. Gracias.
Hay dos formas de cambiar diseños en el código:
A. Cambiar la visibilidad. Incluya diferentes diseños en su xml:
<include
android:id="@+id/id1"
android:visibility="visible"/>
<include
android:id="@+id/id2"
android:visibility="gone"/>
y en el código usa esto:
findViewById(R.id.id1).setVisibility(View.GONE);
findViewById(R.id.id2).setVisibility(View.VISIBLE);
B. Agregar manualmente los niños. Use el mismo xml que usa ahora y agregue el código que puede agregar o eliminar hijos:
yourRelativeLayout.removeAllViews();
yourRelativeLayout.addView(viewToInclude);
Fuera de contexto:
No necesitas escribir xmlns:android
param en RelativeLayout. Sólo para la etiqueta más superior en el archivo de diseño.
Sugiero ViewFlipper
dentro de RelativeLayout
de sus declaraciones de include
. Prueba de esta manera:
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/vf"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<include android:id="@+id/include1" layout="@layout/ikinci" />
<include android:id="@+id/map" layout="@layout/third_layout" />
</ViewFlipper>
Acceda a ViewFlipper como se muestra abajo. Inicialmente se emite el primer diseño:
ViewFlipper vf = (ViewFlipper)findViewById(R.id.vf);
Para el botón onClickListener:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
vf.setDisplayedChild(1);
}
});