如何使Android ScrollView淡入淡出的边缘始终可见?

如何使Android ScrollView淡入淡出的边缘始终可见?,android,scrollview,fading,Android,Scrollview,Fading,默认情况下,仅当可以沿该方向滚动时,scrollview的淡入边缘才可见。如何使其始终可见 我不想在上面放任何抽绳之类的东西。我想使用内置的淡入淡出边缘来完成它,可能是通过覆盖一些scrollview函数。是的,扩展scrollview并覆盖这些方法(基于Donut-release2): 为了便于比较,这是原始代码,当您接近列表末尾时,它会缩短衰落边缘: @Override protected float getTopFadingEdgeStrength() { if (getChild

默认情况下,仅当可以沿该方向滚动时,scrollview的淡入边缘才可见。如何使其始终可见


我不想在上面放任何抽绳之类的东西。我想使用内置的淡入淡出边缘来完成它,可能是通过覆盖一些scrollview函数。

是的,扩展scrollview并覆盖这些方法(基于Donut-release2):

为了便于比较,这是原始代码,当您接近列表末尾时,它会缩短衰落边缘:

@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;
}
@覆盖
受保护的浮点getTopFadingEdgeStrength(){
如果(getChildCount()==0){
返回0.0f;
}
最终整数长度=getVerticalFadingEdgeLength();
如果(mScrollY<长度){
返回mScrollY/(float)长度;
}
返回1.0f;
}
@凌驾
受保护的浮点getBottomFadingEdgeStrength(){
如果(getChildCount()==0){
返回0.0f;
}
最终整数长度=getVerticalFadingEdgeLength();
final int bottomEdge=getHeight()-mPaddingBottom;
final int span=getChildAt(0).getBottom()-mScrollY-bottomEdge;
if(跨度<长度){
返回跨度/(浮动)长度;
}
返回1.0f;
}

您还可以使用以下代码:

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

你能告诉我你为什么要这么做吗?淡入效果是专门为通知用户他可以向该方向滚动而设计的。如果您将其更改为“始终显示淡入淡出的边缘”,用户会认为他可以向任何方向滚动,并认为在不可能的情况下某些东西已损坏。
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;
}
}