Question Bouton d'action flottant bloquant les autres composants


La nouvelle conception matérielle de Google recommande d'utiliser des boutons d'action flottants pour attirer l'attention de l'utilisateur sur l'action principale sur cet écran. Il y a beaucoup d'exemples de ceci dans une vue de liste.

Maintenant, supposons que votre vue de liste ne comporte que suffisamment d'éléments pour remplir l'écran, rendant le défilement impossible. Si vos éléments de liste ont un composant spécifique avec lequel l'utilisateur peut interagir, par exemple un commutateur ou une étoile favorite, il est possible que le bouton d'action flottant bloque ce composant. Comment devrions-nous gérer ce cas?

MODIFIER: En fait toujours se passe avec le dernier élément de votre liste


13
2018-03-31 06:46


origine


Réponses:


Ajouter une vue vide avec la même hauteur que le bouton flottant en bas de la liste. Ainsi, lorsque vous faites défiler votre liste, le dernier élément apparaîtra et le bouton flottant ne masquera pas le dernier élément de la liste. C'est une solution simple et rapide.


7
2018-03-31 07:13



Je viens d'avoir ce problème maintenant, et je l'ai résolu de cette façon:

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

Et je suppose qu'il y a toujours une meilleure façon. comme vérifier si vous en avez même besoin. et seulement ensuite pour l'afficher. mais pour l'instant, ce code simple fonctionne très bien.

Et voici la fonction de conversion:

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

Ou nous pouvons simplement ajouter un peu de rembourrage:

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

1
2018-04-18 06:22



Lors du chargement de la liste, vous pouvez créer un indicateur et rechercher si l'élément de la liste est le dernier élément visible à l'écran, puis masquer le bouton flottant.

utilisez ceci pour trouver le dernier objet visible

int currentPosition = list.getLastVisiblePosition();

Vous obtiendrez le dernier numéro de l'article.i.e si le 7ème élément est visible en dernier dans votre liste, il renverra la valeur de currentPosition = 7;

Une fois que vous obtenez le nombre d'éléments qui correspondent à votre écran, vérifiez maintenant le drapeau

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

0
2018-03-31 06:55



Vous pouvez définir la position du bouton d’action google en haut à gauche en utilisant

     `android:layout_gravity="top|left"`

De cette façon, il a l'air bien et ne cache rien.


0
2017-09-22 05:55



Je fais juste ce que je pense que l'application google gmail est en train de faire et ajoute du padding à recyclerView (ou 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" />

0
2017-07-31 06:30