2011-07-31 5 views
8

Par défaut, le fondu enchaîné de scrollview n'est visible que s'il est possible de faire défiler dans cette direction. Comment puis-je le rendre visible à tout moment?Android ScrollView fading edge

Je ne veux pas mettre des tiroirs sur le dessus ou quelque chose comme ça. Je veux l'accomplir en utilisant le bord d'évanouissement intégré, probablement en remplaçant certaines fonctions de scrollview.

Merci à l'avance

+1

Pouvez-vous dire, pourquoi voudriez-vous faire cela? L'effet d'évanouissement est conçu dans le but spécifique d'informer l'utilisateur qu'il peut faire défiler dans cette direction. Si vous le modifiez pour montrer toujours le bord de fondu, l'utilisateur penserait qu'il peut faire défiler dans n'importe quelle direction et penser que quelque chose est cassé quand ce n'est pas possible. –

Répondre

23

Oui, étendre ScrollView et remplacer ces méthodes (basé sur Donut-release2):

@Override 
protected float getTopFadingEdgeStrength() { 
    if (getChildCount() == 0) { 
     return 0.0f; 
    } 
    return 1.0f; 
} 

@Override 
protected float getBottomFadingEdgeStrength() { 
    if (getChildCount() == 0) { 
     return 0.0f; 
    } 
    return 1.0f; 
} 

Par souci de comparaison, voici le code d'origine, ce qui raccourcit le bord fondu comme vous vous rapprochez de la fin de la liste:

@Override 
protected float getTopFadingEdgeStrength() { 
    if (getChildCount() == 0) { 
     return 0.0f; 
    } 

    final int length = getVerticalFadingEdgeLength(); 
    if (mScrollY < length) { 
     return mScrollY/(float) length; 
    } 

    return 1.0f; 
} 

@Override 
protected float getBottomFadingEdgeStrength() { 
    if (getChildCount() == 0) { 
     return 0.0f; 
    } 

    final int length = getVerticalFadingEdgeLength(); 
    final int bottomEdge = getHeight() - mPaddingBottom; 
    final int span = getChildAt(0).getBottom() - mScrollY - bottomEdge; 
    if (span < length) { 
     return span/(float) length; 
    } 

    return 1.0f; 
} 
+1

N'oubliez pas de voter et d'accepter les réponses à vos questions - ou au moins de répondre par un commentaire. – cdhabecker

+1

Cela peut être une réponse à "Si vous voulez masquer complètement le fondu enchaîné". Brillant merci !!! Cependant, il devrait y avoir un moyen plus facile de faire cela Android: P –