¿Cómo puedo alinear un elemento a la derecha en FrameLayout?
Tengo un FrameLayout que contiene 2 vistas, el segundo es algo así como un Close Button (X)
y quiero colocarlo a la derecha.
He intentado layout_gravity = "correcto", pero eso no funcionó.
- Después de que el fragmento de cambio de configuración de backstack ahora está compartiendo el FrameLayout?
- Rotar diseño de trama que contiene botones dinámicos
- ImageView en cambio de orientación - Drawable ignora setBounds y vuelve al estado original
- Handle Fragment duplication on Screen Rotate (con código de ejemplo)
- Panel corredero deslizante - panel deslizante de línea fina bajo google mapfragment
Este es mi layout 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>
- Agregar y eliminar un TextView dinámicamente en Android
- Android - La altura de la estructura del marco no coincide con el diseño del coordinador
- Android: ¿Cómo usar colores personalizados?
- Convierta el diseño del marco en imagen y guárdelo
- Imagen de fondo de pantalla completa en una actividad
- Android: cómo escalar una imagen para llenar el fondo de un LinearLayout sin preservar la relación de aspecto?
- ¿Qué hace FrameLayout?
- Cómo deshabilitar detrás de ver haga clic en evento Framelayout
Le recomiendo que utilice un RelativeLayout
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 más recientemente añadido en la parte superior. El tamaño del diseño del marco es el tamaño de su hijo más grande (más relleno), visible o no (si el padre de FrameLayout lo permite). Las vistas GONE se utilizan para dimensionar sólo si setConsiderGoneChildrenWhenMeasuring () se establece en true.
BTW, ¿desea el botón en la parte superior de la ImageView o al lado de ella? Estás ajustando el ancho del diseño y del imageView al mismo tamaño.
Después del comentario, puedo ver dos opciones:
-
android: paddingLeft = "250dp"
-
haga el tamaño del botón 320dp y agregue un fondo de encargo, sobre todo transparente. Haga que el parche 9 para que pueda determinar dónde agregar el texto en él (ver mi respuesta aquí para saber cómo hacer eso: Cómo crear androide spinner sin triángulo hacia abajo en el lado derecho del widget )
Lea el DOCS:
FrameLayout está diseñado para bloquear un área en la pantalla para mostrar un solo elemento. Generalmente, FrameLayout debe utilizarse para mantener una vista de un solo hijo, ya que puede ser difícil organizar las vistas de los niños de una manera que sea escalable 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 gravedad a cada niño, utilizando el atributo android: layout_gravity.
Tratar:
<TextView ..... android:layout_gravity="right" />
Puede colocar una vista en 9 lugares diferentes dentro de un FrameLayout
Disfrutar
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>
Utilice un RelativeLayout en su lugar.
Programatically, usted puede fijar el margen usando FrameLayout.LayoutParams. Lo siguiente funcionaría para colocar una vista en la parte inferior de la 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);
¿Desea utilizar FrameLayout o RelativeLayout?
Mi entendimiento dice que FrameLayout se utiliza si desea reemplazar su vista actual por otra vista. Su requisito puede ser cumplido por RelativeLayout.
- Vista previa de la cámara Android: relación de aspecto 1: 1, ¿cómo?
- Transición de elementos compartidos no funciona