我有一个ImageView
,如下所示:
<ImageView
android:id="@+id/barchart"
android:layout_width="100dp"
android:layout_height="6dp"
android:layout_below="@+id/stats"
android:layout_marginTop="9dp"
android:layout_toRightOf="@+id/model"
android:background="@android:color/white" />
因此,该图像基本上以白色水平条的形式表示。现在,我希望颜色其ImageView
宽度取决于动态值。如果值是30dp那么,图像的30dp将是一种颜色,其余70dp将是白色。
因此,目标基本上是以条形图的形式表示。
答案 0 :(得分:1)
最简单的方法是覆盖View类并手动绘制条形图。也许甚至不是一个条纹,而是整个图表。这很容易做到。像这样:
class ChartView extends View {
Paint paint = new Paint();
List<Rect> stripes = new ArrayList<Rect>();
List<Integer> colors = new ArrayList<Integer>();
public ChartView(Context context) {
super(context);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
for (Rect r : stripes) {
paint.setColor(colors.get(stripes.indexOf(r)));
canvas.drawRect(r, paint);
}
}
}
当然使用rects来存储酒吧是一个相当糟糕的主意。此外,你必须改变绘图部分以实现双色条,但我希望你明白这一点。
http://developer.android.com/reference/android/graphics/Canvas.html http://developer.android.com/reference/android/graphics/Paint.html
答案 1 :(得分:1)
可能重复:banded background with two colors?
您可以看到xml
创建它的方式以及设置它的dynamic
方式。