読者です 読者をやめる 読者になる 読者になる

みんからきりまで

きりみんです。

ScrollViewの上下のシャドウはbackgroundで変えるものではなかった

プログラミング Android


メモ。


スクロールした時に上下に出る影の色を変えたかったので、ScrollViewのbackgroundで色を指定して、その中のLayoutで白を指定して上書きしてた。
基本的にはこのやりかたで問題なく動作していたんだけれど、複雑なレイアウトを高速でスクロールしたりすると稀に一瞬ScrollViewの背景色が見えて点滅したようになる現象が起こった。
どうもViewの描写処理が追いつかず本来後ろに隠れているものが見えてしまうようだ。


対策を調べたら、そもそもScrollViewの影の色は本来backgroundで指定するものではないらしい。
影の色を変更するには、ScrollViewを継承したクラスを作り、getSolidColor()をOverrideして任意の色を返すように実装してあげればいいらしい。

@Override
public int getSolidColor() {
    return Color.rgb(0x30, 0x30, 0x30);
}


・・・でもこの方法めちゃくちゃ面倒臭い気がする。
どうして普通に指定出来ないんだろう。
基本的にはbackgroundで指定する方法でも良い気がするけど、同じような現象が起こった場合とかScrollViewの背景と影を別の色にしたい場合にはこの方法を試してみよう。


参考
http://stackoverflow.com/questions/2640877/how-to-set-the-color-of-an-android-scrollview-fading-edge
http://developer.android.com/reference/android/view/View.html