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;
}
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. –