将垂直线添加到ProgressBar

问题描述 投票:0回答:1

我有一个ProgressBar,效果很好。我使用了以下布局:

<ProgressBar style="?android:attr/progressBarStyleHorizontal"
    android:id="@+id/scoreboard_rank_progress_bar"
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:layout_marginTop="6dp"
    android:indeterminate="false"
    android:layout_gravity="center_horizontal"
    android:progressDrawable="@drawable/progress_bar" />

现在,我想添加红色垂直线,例如在条形的25%和65%处(从左开始)。我发现以下approach

Paint linePaint = new Paint();
linePaint.setColor(getResources().getColor(android.R.color.black));
final float lineWidth = 5f;
linePaint.setStrokeWidth(lineWidth);
canvas.drawLine(getWidth() * m100 / 100, 0, 
                getWidth() * m100 / 100, getHeight(), 
                linePaint);

[不幸的是,这不起作用,因为我正在使用活动,并且无法访问画布。我还能如何添加垂直线?理想情况下,我想在代码中执行此操作,以便可以在运行时进行更改,但如果仅在布局中可行,我也可以这样做。

android android-layout charts android-drawable android-progressbar
1个回答
1
投票

您需要扩展ProgressBar类,并覆盖onDraw()方法,该方法将为您提供一个可绘制的画布。然后,您可以执行绘画逻辑,例如:

© www.soinside.com 2019 - 2024. All rights reserved.