Este es mi código con FrameLayout
:FrameLayout, vistas niño no se muestran más
<FrameLayout
android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView
android:id="@+id/frameView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/image1"
/>
</FrameLayout>
El espectáculo ImageView también.
Ahora tengo un diseño personalizado que se extiende desde FrameLayout, p. MyFrameLayout.
En MyFrameLayout, quiero que la altura de la disposición es siempre la mitad de la anchura, por lo que mi código es:
public class MyFrameLayout extends FrameLayout {
// 3 constructors just call super
@Override
protected void onMeasure(int widthMeasureSpec,
int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = (int) (width * 0.5);
setMeasuredDimension(width, height);
}
}
luego usarlo en xml:
<com.test.MyFrameLayout
android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView
android:id="@+id/frameView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/image1"
/>
</com.test.MyFrameLayout>
Pero ahora el interior ImageView desapareció.
Creo que no implemento onMeasure
o onLayout
correctamente. Creo que también necesito cambiar el tamaño de las vistas de los niños. Pero no sé qué hacer ahora.
ACTUALIZACIÓN
por comentario TheDimasig 's, acabo de revisar mi código y actualizar mi pregunta. Gracias
Dos sugerencias: 1. Compruebe sus métodos 'onMeasure' y' onLayout' en su clase 'MyFrameLayout'. 2. Intente utilizar la herramienta hierarhyviewer para la depuración. Además, si es posible mostrar todo el código de su diseño personalizado –
@TheDimasig, acabo de actualizar mi pregunta, por favor revise :) – Freewind