android - 如何使 Android ScrollView 淡出边缘始终可见?

标签 android scrollview fading

默认情况下, ScrollView 的淡入淡出边缘只有在可以向该方向滚动时才可见。如何让它始终可见?

我不想在顶部放置任何可绘制对象或类似的东西。我想使用内置的渐变边缘来完成它,可能是通过覆盖一些 ScrollView 函数。

最佳答案

是的,扩展 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;
}

关于android - 如何使 Android ScrollView 淡出边缘始终可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6889908/

相关文章:

android - 我是否需要运行时权限检查才能写入棉花糖中的 getExternalFilesDir() 路径?

java - 在 Dagger 中注入(inject)返回 null

ios - 当图像移向 ScrollView 的边缘时如何使 ScrollView 滚动

android - 将 ScrollView 添加到 RelativeLayout 会更改小部件的位置

jquery - 第二个标题根据滚动淡入或淡出

android - Google Cardboard Unity 5 无立体感

ios - 如何使 ScrollView 在到达最后一张图像后从第一页开始滚动?

Css 溢出隐藏的 div 褪色

jquery - 使用 jquery 淡出整个页面

java - Kotlin 对象父类(super class)型构造函数