Как сделать так, чтобы Android ScrollView исчезал всегда? - PullRequest
8 голосов
/ 31 июля 2011

По умолчанию исчезающий край scrollview виден, только если есть возможность прокрутки в этом направлении.Как я могу сделать его видимым в любое время?

Я не хочу ставить какие-либо элементы рисования сверху или что-то в этом роде.Я хочу сделать это, используя встроенный край затухания, возможно, переопределив некоторые функции прокрутки.

Ответы [ 2 ]

23 голосов
/ 01 августа 2011

Да, расширить ScrollView и переопределить эти методы (на основе 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;
}

Для сравнения, это оригинальный код, который сокращает затухание, когда вы приближаетесь к концу списка:

@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;
}
0 голосов
/ 25 января 2019

Вы также можете использовать следующий код:

public class TopFadeEdgeScrollView extends ScrollView {

public TopFadeEdgeScrollView(Context context) {
    super(context);
}

public TopFadeEdgeScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public TopFadeEdgeScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

@Override
protected float getBottomFadingEdgeStrength() {
    return 0.0f;
}
}
...