在ProgressBar上放置文本可以通过以下几种方式实现:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progress="50"
android:max="100"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="50%"/>
</RelativeLayout>
public class TextProgressBarDrawable extends Drawable {
private ProgressBar progressBar;
private String text;
public TextProgressBarDrawable(ProgressBar progressBar, String text) {
this.progressBar = progressBar;
this.text = text;
}
@Override
public void draw(@NonNull Canvas canvas) {
// 绘制ProgressBar
progressBar.draw(canvas);
// 绘制文本
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(24);
paint.setTextAlign(Paint.Align.CENTER);
canvas.drawText(text, canvas.getWidth() / 2, canvas.getHeight() / 2, paint);
}
@Override
public void setAlpha(int alpha) {
progressBar.setAlpha(alpha);
}
@Override
public void setColorFilter(@Nullable ColorFilter colorFilter) {
progressBar.setColorFilter(colorFilter);
}
@Override
public int getOpacity() {
return progressBar.getOpacity();
}
}
然后,在代码中使用该自定义Drawable来设置ProgressBar的进度Drawable,同时设置文本。具体代码如下:
ProgressBar progressBar = findViewById(R.id.progressBar);
String text = "50%";
TextProgressBarDrawable drawable = new TextProgressBarDrawable(progressBar, text);
progressBar.setProgressDrawable(drawable);
public class TextProgressBar extends ProgressBar {
private TextView textView;
public TextProgressBar(Context context) {
super(context);
init(context);
}
public TextProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public TextProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
textView = new TextView(context);
textView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
textView.setGravity(Gravity.CENTER);
textView.setTextColor(Color.BLACK);
addView(textView);
}
public void setText(String text) {
textView.setText(text);
}
}
然后,在布局文件中使用该自定义控件,并在代码中设置文本。具体代码如下:
<com.example.TextProgressBar
android:id="@+id/textProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progress="50"
android:max="100"/>
TextProgressBar textProgressBar = findViewById(R.id.textProgressBar);
textProgressBar.setText("50%");
以上是三种常见的在ProgressBar上放置文本的方法,根据具体需求选择适合的方式进行实现。
领取专属 10元无门槛券
手把手带您无忧上云