2011-07-31 99 views
8

默認情況下,只有可以在該方向上滾動時,scrollview的淡入邊緣纔可見。我怎樣才能讓它始終可見?Android ScrollView淡入邊緣

我不想把任何drawable放在頂部或類似的東西。我想用內建的淡入淡出的邊緣完成它,可能是通過重寫一些scrollview函數。

預先感謝

+1

你能告訴,你爲什麼要這樣做?淡化效果是爲了通知用戶他可以朝這個方向滾動的特定目的而設計的。如果你改變它始終顯示衰落邊緣,用戶會認爲他可以向任何方向滾動,並認爲當不可能的時候某些東西被破壞了。 –

回答

23

是,延長滾動型和覆蓋這些方法(基於甜甜圈-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

這可能是「如果你想完全隱藏衰落邊緣」的答案。非常感謝!但是,應該有一個更簡單的方法來做Android:P –