android进度条中的垂直线

时间:2014-08-27 11:44:43

标签: android android-layout charts android-drawable android-progressbar

我需要一个水平进度条,主进程结束时有一条黑色垂直线。使用我的代码,进度条正常,但该行总是在栏的中间。我尝试使用clip,但随后它消失了,而不是走到细分的末尾。

我的代码

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@android:id/background">
     <shape android:shape="rectangle">
         <corners android:radius="5dip" />
         <solid android:color="#ffffffff" />
         <stroke android:width="1dip" android:color="#ff000000" />
     </shape>
 </item>

 <item android:id="@android:id/progress">
     <clip>
         <shape>
             <corners android:radius="5dip" />
             <solid android:color="#33b5e5" />
             <stroke android:width="1dip" android:color="#ff000000" />
         </shape>
     </clip>
 </item>

 <item android:id="@+id/line">
     <rotate android:fromDegrees="90"
            android:toDegrees="90" >
         <shape android:shape="line">
             <stroke android:width="5dp" android:color="#ff000000"/> 
         </shape>
     </rotate> 
 </item>

</layer-list>

我的问题

由于我必须向栏添加另一个流程,因此我无法使用该行的secondaryProgress标记。此外,线条的位置和酒吧的颜色有很多可能性,我不想做10种不同的抽屉。

是否有可能通过进度条实现我想要的目标,或者有更好的方法吗?我搜索了关于垂直线的线程,还搜索了多色条,甚至是堆积图表。但不知何故,我无法找到合适的图书馆或简单的方法来完成我的进度条。

目标

这是我最后想要的照片:

enter image description here

我需要垂直线在条形图中显示100%标记,可能“超过100%”。进度可以从左到右或从右到左显示。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案...我从上面的代码中删除了订单项,并将以下代码添加到onDraw()方法中:

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);

在代码中,m100是整数行的位置。例如,如果100%相似标记应位于条形长度的80%,则为80。