FloatingActionButton, layout_anchor y layout_gravity
Un poco de un newb aquí. Estoy a unos dos meses en el desarrollo de Android, pero tengo años de experiencia en desarrollo en otros entornos.
Bueno. Tengo un FloatingActionButton
que no apareció donde yo lo esperaba o quería. Está dentro de un CoordinatorLayout
, junto con un AppBarLayout
/ Toolbar
, y después de un ListView
.
- No se especifica ninguna orientación y el valor predeterminado es horizontal. Esta es una fuente común de errores cuando los niños se añaden dinámicamente
- Desplazamiento y desaparición de líneas de código; Problemas con el Editor XML de Eclipse
- Android - cambia dinámicamente el menú de opciones, pero al inflar desde XML
- Cambiando el color de fondo del menú desplegable de la acción
- Andoird: Custom switch: Cómo hacer el pulgar más del 50% de una pista sin usar imágenes
Aquí está el diseño:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragment_coordinator" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".ViewVehicleList"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:title="Vehicle List" app:layout_scrollFlags="scroll|enterAlways|snap" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> </android.support.design.widget.AppBarLayout> <ListView android:id="@+id/Vehicle_ListView" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="#FFFFFF" app:layout_behavior="@string/appbar_scrolling_view_behavior"> </ListView> <android.support.design.widget.FloatingActionButton android:id="@+id/fab_AddVehicle" style="@style/FloatingAddButton" android:src="@drawable/ic_green_add" android:layout_gravity="bottom|end" app:layout_anchor="@id/Vehicle_ListView" android:onClick="addVehicle"/> </android.support.design.widget.CoordinatorLayout>
Con este diseño, la pantalla se ve así:
Mi layout_gravity
dice "bottom|end"
. Lo cambié a "bottom|right"
, pero obtuve el mismo resultado. He leído muchos tutoriales, e investigado Stack Overflow, y no han tenido suerte.
Me las arreglé para solucionarlo eliminando el ancla listado en la app:layout_anchor="@id/Vehicle_ListView"
elemento FAB app:layout_anchor="@id/Vehicle_ListView"
, que parece estar en contra de lo que he leído: para usar un FAB y posicionarlo correctamente debes usar layout_anchor
Y layout_gravity
. Sin la etiqueta de anclaje, se ve así:
Así que aquí está mi pregunta: ¿Por qué mi anclaje está atornillando el posicionamiento de mi FloatingActionButton
? ¿Qué estoy haciendo mal?
Bulo
- Cómo configurar el menú en la barra de herramientas en Android
- Uso de iconos vectoriales en Android
- Cómo cambiar la casilla de verificación (marcar casilla) color a blanco en android XML
- Android - ¿Cómo manejar Webservice en XML?
- Cómo insertar texto "<<" en TextView?
- Ejemplo de cómo descargar JSON desde el servidor?
- Entendiendo & lt & gt
- ¿Cómo acceder a <item> desde un recurso <string-array> en un XML android?
Sólo tienes que añadir layout_anchorGravity
.
<android.support.design.widget.FloatingActionButton android:id="@+id/fab_AddVehicle" style="@style/FloatingAddButton" android:src="@drawable/ic_green_add" android:onClick="addVehicle" app:layout_anchor="@id/Vehicle_ListView" app:layout_anchorGravity="bottom|end" />