pantalla - layout dinamico android
Android: ¿Alinear el botón a la esquina inferior derecha de la pantalla usando FrameLayout? (9)
Configuración android:layout_gravity="bottom|right"
funcionó para mí
Estoy tratando de poner los controles de zoom del mapa en la esquina inferior derecha de la pantalla. Podría hacerlo con RelativeLayout utilizando alignParentBottom="true"
y alignParentRight="true"
, pero con Framelayout no encontré ninguno de esos atributos. ¿Cómo lo alineo a la esquina inferior derecha de la pantalla?
Dos formas de hacer esto:
1) Usar un diseño de marco
android:layout_gravity="bottom|right"
2) Uso de un diseño relativo
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
En realidad, es posible, a pesar de lo que se dice en otras respuestas. Si tiene un FrameLayout
y desea colocar un elemento secundario en la parte inferior, puede usar android:layout_gravity="bottom"
y eso alineará ese elemento al final de FrameLayout
.
Sé que funciona porque lo estoy usando. Sé que es tarde, pero podría ser útil para otros ya que este se encuentra en las primeras posiciones en google
No puedes hacerlo con FrameLayout.
Por especificación:
http://developer.android.com/reference/android/widget/FrameLayout.html
"FrameLayout está diseñado para bloquear un área en la pantalla para mostrar un solo elemento. Puede agregar varios elementos secundarios a un FrameLayout, pero todos los elementos secundarios están vinculados a la esquina superior izquierda de la pantalla".
¿Por qué no usar RelativeLayout?
Se puede lograr usando RelativeLayout
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:src="@drawable/icon"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true" />
</RelativeLayout>
Si quieres probar con el código de java. Aqui tienes -
final LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
yourView.setLayoutParams(params);
params.gravity = Gravity.BOTTOM; // set gravity
También encontré esta situación y descubrí cómo hacerlo usando FrameLayout. La siguiente salida es producida por el código que se proporciona a continuación.
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/contactbook_icon"
android:layout_gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="140"
android:textSize="12dp"
android:textColor="#FFFFFF"
android:layout_gravity="bottom|right"
android:layout_margin="15dp" />
</FrameLayout>
Cambie el valor de margen para ajustar la posición del texto sobre la imagen. Eliminar el margen puede hacer que el texto salga de la vista algunas veces.
puede agregar un TextView invisible a FrameLayout.
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:visibility="invisible"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<Button
android:id="@+id/daily_delete_btn"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="DELETE"
android:layout_gravity="center"/>
<Button
android:id="@+id/daily_save_btn"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="SAVE"
android:layout_gravity="center"/>
</LinearLayout>
android:layout_gravity="bottom"