Material Slider

419 阅读1分钟

Slider继承自BaseSlider

BaseSlider

Slider的最小高度为48dp


minWidgetHeight = 48dp固定值

int topAndBottomPaddings = getPaddingTop() + getPaddingBottom();
int minHeightRequiredByTrack = trackHeight + topAndBottomPaddings;
int minHeightRequiredByThumb = thumbRadius * 2 + getPaddingTop() + getPaddingBottom();

//newWidgetHeight为实际高度
int newWidgetHeight =
    max(minWidgetHeight, max(minHeightRequiredByTrack, minHeightRequiredByThumb));

widgetHeight = newWidgetHeight;

trackHeight可以通过

app:trackHeight="?"//设置轨道的高度

minHeightRequiredByThumb是直径和上下padding的和,

thumbRadius可以通过

app:thumbRadius="?"//设置拇指球的半径

设置tooltip的style

labelStyle =
    a.getResourceId(R.styleable.Slider_labelStyle, R.style.Widget_MaterialComponents_Tooltip);
app:labelStyle="?"

tooltip是一个drawable,所以drawable适用的style他都适用,初次之外,它还可以设置这些属性:

colorOnBackground或backgroundTint设置背景颜色,backgroundTint优先;colorOnBackground设置的颜色会自动加上0.6透明度,系统colorBackground属性为0.9透明度
padding
minWidth
minHeight
layout_margin
text
textAppearance

设置valueFrom/valueTo

valueFrom默认0,valueTo默认1

设置轨道颜色

trackColor

minTouchTargetSize

minTouchTargetSize

拇指球

thumbColor//拇指球颜色
thumbStrokeColor //拇指球描边颜色
thumbStrokeWidth//拇指球描边宽度
thumbRadius //半径

拇指球外围光圈

haloColor//颜色
haloRadius//半径

tick 就是轨道上那些位置点

tickVisible 默认true
若要显示tickVisible为true还不够,还要设置stepSize大于0的一个数
tickColor 设置颜色

tooltip

labelStyle
labelBehavior

ShapeAppearanceModel

tooltip和拇指球都用到这个了

拇指球这么设置的,也就是圆形是固定死的再slider固定死的,我们也改不了

defaultThumbDrawable.setShapeAppearanceModel(
    ShapeAppearanceModel.builder().setAllCorners(CornerFamily.ROUNDED, thumbRadius).build());