2011-07-31 3 views
8

기본적으로 scrollview의 페이드 가장자리는 해당 방향으로 스크롤하는 것이 가능한 경우에만 표시됩니다. 나는 그것을 언제나 보이게 할 수 있습니까?Android ScrollView 페이드 가장자리

나는 드로어 블을 위에 얹어 놓고 싶지 않습니다. 나는 내장 된 페이딩 엣지를 사용하여 그것을 달성하기를 원할 것이다. 아마 몇몇 scrollview 함수를 오버라이드함으로써 가능할 것이다. 사전에

감사

+1

왜 그렇게하고 싶습니까? 페이딩 효과는 사용자에게 그 방향으로 스크롤 할 수 있음을 알리는 특정 목적으로 설계되었습니다. 페이딩 에지를 항상 표시하도록 변경하면 사용자는 어떤 방향으로 스크롤하고 가능하지 않을 때 무언가가 고장 났다고 생각할 수 있습니다. –

답변

23

예,있는 ScrollView를 확장하고 이러한 메소드를 오버라이드 (도넛 - 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; 
} 
+1

질문에 대한 답변을 수락하고 적어도 답글을 달아주세요. – cdhabecker

+1

"페이드 에지를 완전히 숨기려면"에 대한 대답 일 수 있습니다. 찬사 감사! 그러나 그 안드로이드를 할 수있는 더 쉬운 방법이 있어야합니다 : P –