如何自定义Android Material Slider滑块提示气泡的字体样式?
Material Slider 提示气泡(Tooltip)自定义字体样式修正方案
针对你使用的 com.google.android.material:material:1.3.0 版本组件,样式不生效的核心原因是 1.3.0 版本的 Slider 组件中,Tooltip 气泡并不会读取控件全局的 android:textAppearance 属性,需要使用组件专属的配置属性才能生效。
具体修正步骤
- 移除之前配置在 Slider 全局样式中无效的
android:textAppearance映射项,该项只会影响 Slider 自身关联的标签文本,不会作用于拖动时弹出的提示气泡 - 使用 Slider 专门提供的
tooltipTextAppearance属性绑定自定义的文本样式
修正后的样式代码
<!-- Slider 全局样式 --> <style name="Widget.App.Slider" parent="Widget.MaterialComponents.Slider"> <!-- 用专属属性绑定 tooltip 样式,不要用 android:textAppearance --> <item name="tooltipTextAppearance">@style/TextAppearance.App.Tooltip</item> </style> <!-- Tooltip 自定义文本样式 --> <style name="TextAppearance.App.Tooltip" parent="TextAppearance.MaterialComponents.Tooltip"> <item name="android:textColor">@color/purple_500</item> <item name="fontFamily">@font/josefin_sans_semibold</item> <item name="android:fontFamily">@font/josefin_sans_semibold</item> <!-- 可按需补充字号、字重配置 --> <item name="android:textSize">14sp</item> </style>
如果你习惯通过主题覆盖方式配置样式
之前定义的 ThemeOverlay.PrimaryPalette.Red 因为没有继承 Slider 对应的主题基类,就算把样式项写进去也不会被组件识别,修正方式如下:
<style name="ThemeOverlay.PrimaryPalette.Red" parent="ThemeOverlay.MaterialComponents.Slider"> <item name="colorPrimary">#e53935</item> <item name="colorPrimaryDark">#ab000d</item> <!-- 同样通过 tooltipTextAppearance 绑定自定义样式 --> <item name="tooltipTextAppearance">@style/TextAppearance.App.Tooltip</item> </style>
版本注意事项
- Material 库从 1.2.0 版本开始,Tooltip 样式就统一通过
tooltipTextAppearance属性配置,通用的android:textAppearance和该组件的气泡样式完全无关联 - 如果配置后仍不生效,可以检查 Slider 的
labelBehavior属性,只要没有设置为LabelBehavior.Gone,拖动时的气泡都会正常加载自定义样式
内容的提问来源于stack exchange,提问作者Bolt UIX
相关产品推荐
相关产品推荐

