我使用材质的滑块组件:
我试图在拇指移动时显示标签,labelFormatter属性似乎支持该标签。
这是我的代码的样子:
Slider s = new Slider(context);
s.setLabelFormatter(new Slider.LabelFormatter() {
@NonNull
@Override
public String getFormattedValue(float value) {
return "MY STRING";
}
});
当我与调试器逐行进行调试时,它将通过此函数:
private void drawLabelText(@NonNull Canvas canvas, int width, int top) {
labelTextPaint.getTextBounds(labelText, 0, labelText.length(), labelTextBounds);
int left = trackSidePadding + (int) (thumbPosition * width) - labelTextBounds.width() / 2;
canvas.drawText(labelText, left, top - labelTextTopOffset - thumbRadius, labelTextPaint); }
但没有文本显示,只有滑块...
我在安德罗伊德(Androïd)有点新,我肯定会错过一些东西。
感谢您的帮助:)
编辑1:
这里是简化的整个代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CoordinatorLayout layout = new CoordinatorLayout(this);
setContentView(layout);
// I am Using Coordinator Layout for current activity so...
CoordinatorLayout.LayoutParams layoutParams = new CoordinatorLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//Setting gravity to CENTER
layoutParams.gravity = Gravity.CENTER;
Slider slider = new Slider(this);
slider.setLabelFormatter(new Slider.LabelFormatter() {
@NonNull
@Override
public String getFormattedValue(float value) {
return "MY STRING";
}
});
layout.addView(slider, layoutParams);
}
但仍然无法正常工作...
输出结果
编辑2:
将我的Material组件从版本:“ 1.2.0-alpha02”更新到版本:“ 1.2.0-alpha05”解决了该问题。
实际上,我想发表评论,但是由于声誉限制,我无法发表评论,看起来您正在以编程方式在活动中添加视图。在这里,我用LabelFormatter实现了新的MaterialComponent Slider
ViewGroup group = findViewById("YOUR_ACTIVITY_LAYOUT");
// I am Using Coordinator Layout for current activity so...
CoordinatorLayout.LayoutParams layoutParams = new CoordinatorLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//Setting gravity to CENTER
layoutParams.gravity = Gravity.CENTER;
Slider slider = new Slider(this);
slider.setLabelFormatter(new Slider.LabelFormatter() {
@NonNull
@Override
public String getFormattedValue(float value) {
return "MY STRING";
}
});
group.addView(slider, layoutParams);
}