Botón de acción flotante que bloquea otros componentes

El nuevo diseño de material de Google recomienda utilizar botones de acción flotante para llamar la atención del usuario sobre la acción principal en esa pantalla. Hay bastantes ejemplos de esto dentro de una vista de lista.

Ahora, suponga que la vista de lista tiene suficientes elementos para llenar la pantalla, haciendo imposible el desplazamiento. Si los elementos de la lista tienen un determinado componente con el que el usuario puede interactuar, por ejemplo un conmutador o una estrella favorita, es posible que el botón de acción flotante esté bloqueando este componente. ¿Cómo debemos manejar este caso?

EDIT : Esto en realidad siempre sucede con el último elemento de su lista

Agregar una vista en blanco con la misma altura que el botón flotante en el pie de la lista. Así que cuando se desplaza su lista, el último elemento aparecerá y el botón flotante no ocultará el último elemento de la lista. Esta es una solución simple y rápida.

Acabo de tener este problema ahora, y lo resolví de esta manera:

public void addBlankSpace(ListView listView) { Space space = new Space(listView.getContext()); space.setMinimumHeight(Core.dpToPx(50)); listView.addFooterView(space); } 

Y supongo que siempre hay una mejor manera. Como comprobar si incluso lo necesita. Y sólo entonces para mostrarlo. Pero por ahora, este código simple funciona muy bien.

Y aquí está la función de conversión:

 public static int dpToPx(int dp) { return (int)(dp * Resources.getSystem().getDisplayMetrics().density); } 

O podemos agregar un poco de relleno:

 listView.setPadding(0, 0, 0, Core.dpToPx(50)); 

Al cargar la lista, puede crear un indicador y buscar si el elemento de la lista es el último elemento visible en la pantalla, que ocultar el botón flotante.

Use esto para encontrar el último elemento visible

 int currentPosition = list.getLastVisiblePosition(); 

Obtendrá el último número del item.ie si el último elemento es visible en su lista, que devolverá el valor de currentPosition = 7;

Una vez que usted consiga el número de artículos que caben en su pantalla, ahora compruebe para el indicador

 if(listAdapterItemsArray.get(position) == currentPosition) { //hide button } else { //nothing } 

Puede establecer la posición del botón de acción de Google en la parte superior izquierda usando

  `android:layout_gravity="top|left"` 

De esta manera se ve bien y no ocultar nada.

Solo hago lo que creo que está haciendo la aplicación google gmail y agrego relleno al recicladorVer (o listview).

 <android.support.v7.widget.RecyclerView android:id="@+id/my_recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:paddingBottom="100dp" /> 
  • Cómo hacer que AppBarLayout desaparezca por completo con windowTranslucentStatus establecido en true
  • Establecer bordes para un elemento de grupo expandido mediante ExpandableListView
  • Fondo degradado en la barra de herramientas temática material
  • Vista de Scrollview anidada + Recycler
  • Android "más suave" ocultación de la barra de herramientas al desplazarse
  • ¿Cómo puedo utilizar EditText en lugar de TextView y abrir la fechaPicker en un solo clic?
  • Error al inflar la clase android.support.v7.widget.Toolbar?
  • ¿Cómo se cambia el color de línea / campo de EditText en TextInputLayout (cuando se llama a setError)?
  • Obtener AppCompat no admite la excepción de características del tema actual después de actualizar a la versión AppCompat v22.1.0 issue
  • Cómo utilizar la barra de progreso indeterminada en appcompat-v7 r21 biblioteca?
  • Split Action Bar con AppCompat v7 usando Material Design?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.