要改变背景颜色您可以使用自定义样式的标签:
<com.google.android.material.slider.RangeSlider
style="@style/Myslider"
...>
with:
<style name="Myslider" parent="@style/Widget.MaterialComponents.Slider">
<item name="labelStyle">@style/My_Tooltip</item>
<item name="materialThemeOverlay">@style/ThemeOverlay.Slider</item>
</style>
<style name="My_Tooltip" parent="Widget.MaterialComponents.Tooltip">
<!-- background color of the Tooltip -->
<item name="backgroundTint">@color/...</item>
</style>
<style name="ThemeOverlay.Slider" parent="">
<!-- color used by the text in the Tooltip -->
<item name="colorOnPrimary">@color/...</item>
</style>
要自定义标签中的值,您可以LabelFormatter
.
就像是:
RangeSlider slider = findViewById(R.id.slider);
slider.setLabelFormatter(new LabelFormatter() {
@NonNull
@Override
public String getFormattedValue(float value) {
//It is just an example
if (value == 3.0f)
return "TEST";
return String.format(Locale.US, "%.0f", value);
}
});
有关behavior标签的只有这些值(与1.2.0-beta01
and 1.3.0-alpha01)
:
-
LABEL_FLOATING
:标签仅在交互时可见。它将浮动在滑块上方,并可能覆盖该滑块上方的视图。这是默认和推荐的行为。
-
LABEL_WITHIN_BOUNDS
:标签仅在交互时可见。标签将始终在此视图的边界内绘制。这意味着当标签不可见时,滑块上方将显示额外的空间。
-
LABEL_GONE
:永远不会绘制标签。
目前似乎不可能始终显示标签。
您可以使用以下命令设置标签行为setLabelBehavior
方法或labelBehavior
在布局或风格中。
<com.google.android.material.slider.RangeSlider
app:labelBehavior="withinBounds"/>
如果您想更改shape标签的你可以检查这个answer.