studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-xml framelayout

para - manual de programacion android pdf



¿Cómo puedo alinear un elemento a la derecha en FrameLayout? (6)

¿Quieres usar FrameLayout o RelativeLayout?

Según tengo entendido, FrameLayout se usa si desea reemplazar su vista actual por otra vista. Su requisito puede ser cumplido por RelativeLayout.

Tengo un FrameLayout que contiene 2 vistas, el segundo es algo así como un Close Button (X) y quiero ubicarlo a la derecha.

He intentado layout_gravity = "correcto", pero eso no funcionó.

Este es mi diseño xml:

<FrameLayout android:layout_width="320dp" android:layout_height="wrap_content" android:id="@+id/layoutSmallImg"> <ImageView android:id="@+id/bigImage" android:layout_width="320dp" android:layout_height="wrap_content"/> <ImageView android:id="@+id/bigImage" android:layout_width="320dp" android:layout_height="wrap_content"/> <ImageButton android:id="@+id/closebutton" android:background="@android:color/transparent" android:layout_height="30dp" android:layout_marginTop="10dp" android:layout_alignParentRight="true" android:layout_width="30dp" android:paddingLeft="40dp" android:visibility="gone" android:src="@drawable/close" /> </FrameLayout>


Lea el DOCS:

FrameLayout está diseñado para bloquear un área en la pantalla para mostrar un solo elemento. En general, FrameLayout se debe usar para mantener una sola vista secundaria, ya que puede ser difícil organizar las vistas infantiles de una manera que se pueda escalar a diferentes tamaños de pantalla sin que los niños se superpongan entre sí. Sin embargo, puede agregar varios hijos a un FrameLayout y controlar su posición dentro del FrameLayout asignando la gravedad a cada niño, usando el atributo android: layout_gravity.

Tratar:

<TextView ..... android:layout_gravity="right" />

Puede colocar una vista en 9 lugares diferentes dentro de un FrameLayout

Disfrutar


Programáticamente, puede establecer el margen utilizando FrameLayout.LayoutParams. Lo siguiente trabajaría para colocar una vista en la parte inferior de su pantalla:

int desired_height_of_content = //whatever your want the height of your view to be FrameLayout layout = new FrameLayout(this); FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, desired_height_of_content); int difference = screen_height - desired_height_of_content flp.setMargins(difference, 0, 0, 0); layout.addView(your_view, flp);


Simplemente coloque sus elementos dentro de FrameLayout en el segundo RelativeLayout . Y use android: layout_alignParentRight = "true" para el elemento que desea alinear a la derecha.

<FrameLayout android:layout_width="320dp" android:layout_height="wrap_content" android:id="@+id/layoutSmallImg"> <RelativeLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/bigImage" android:layout_width="320dp" android:layout_height="wrap_content"/> <ImageButton android:id="@+id/closebutton" android:background="@android:color/transparent" android:layout_height="30dp" android:layout_marginTop="10dp" android:layout_alignParentRight="true" android:layout_width="30dp" android:paddingLeft="40dp" android:visibility="gone" android:src="@drawable/close" /> </RelativeLayout> </FrameLayout>


Te recomiendo que uses un RelativeLayout lugar

FrameLayout está diseñado para bloquear un área en la pantalla para mostrar un solo elemento. Puede agregar varios hijos a un FrameLayout y controlar su posición dentro del FrameLayout usando la gravedad. Los niños se dibujan en una pila, con el niño agregado más recientemente en la parte superior. El tamaño del diseño del marco es el tamaño de su hijo mayor (más el relleno), visible o no (si el padre del FrameLayout lo permite). Las vistas que están DESAPARECIDAS se usan para dimensionar solo si setConsiderGoneChildrenWhenMeasuring () se establece en true.

Por cierto, ¿quieres el botón en la parte superior de la ImageView o al lado? Está configurando el ancho tanto del diseño como de imageView al mismo tamaño.

Después del comentario, puedo ver dos opciones: