反応ネイティブで垂直スクロールバーを使用して、スクロールインジケーターにスタイルを追加したいと思います。同様に私はスクロールインジケーターの色や他のいくつかのものを変更したいと思います。
どうすればできますか。反応ネイティブで垂直スクロールビューのスクロールインジケーターをstlyすることは可能ですか。
どのプラットフォームでも互換性があるはずです
ScrollViewのindicatorStyle
プロパティを使用して色を変更できますが、サポートされているのは白、黒、またはデフォルトの3色のみです。 scrollIndicatorInsets
プロパティを使用して、インジケーターのインセットを設定できます。よりカスタムスタイルの場合は、 react-native-scroll-indicator を使用できます。
スクロール時にリスナーを追加してから、カスタムビューを作成し、scrollListenerと非表示のスクロールインジケーターのためにビューを変換する必要があります。これは、必要なものの単純な実装です。
class CustomScrollview extends PureComponent {
state = {
indicator: new Animated.Value(0),
wholeHeight: 1,
visibleHeight: 0
}
render() {
const indicatorSize = this.state.wholeHeight > this.state.visibleHeight ?
this.state.visibleHeight * this.state.visibleHeight / this.state.wholeHeight :
this.state.visibleHeight
const difference = this.state.visibleHeight > indicatorSize ? this.state.visibleHeight - indicatorSize : 1
return (
<View >
<ScrollView
showsVerticalScrollIndicator={false}
onContentSizeChange={(width, height) => {
this.setState({ wholeHeight: height })
}}
onLayout={({ nativeEvent: { layout: { x, y, width, height } } }) => this.setState({ visibleHeight: height })}
scrollEventThrottle={16}
onScroll={Animated.event(
[{ nativeEvent: { contentOffset: { y: this.state.indicator } } }]
)}>
</ScrollView >
<View style={styles.indicatorWrapper} />
<Animated.View style={[
styles.indicator, {
height: indicatorSize,
transform: [{
translateY: Animated.multiply(this.state.indicator, this.state.visibleHeight / this.state.wholeHeight).interpolate({
inputRange: [0, difference],
outputRange: [0, difference],
extrapolate: 'clamp'
})
}]
}]} />
</View>
)
}
}
この助けを願っています!