0

私は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" />

したがって、この画像は基本的に白い横縞の形で表されます。ここで、動的な値に応じて幅にを付けたいと思います。値が 30 dp の場合、画像の 30 dp は 1 つの色になり、残りの 70 dp は白色になります。ImageView

したがって、基本的には棒グラフの形で表現することを目的としています。

4

2 に答える 2

1

最も簡単な方法は、Viewクラスをオーバーライドして、バーを手動で描画することです。たぶん、1つのストライプではなく、チャート全体です。とても簡単です。このようなもの:

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を使用することはかなり悪い考えです。また、2色のバーを実現するために描画部分を変更する必要がありますが、あなたがそのアイデアを理解してくれることを願っています。

http://developer.android.com/reference/android/graphics/Canvas.html http://developer.android.com/reference/android/graphics/Paint.html

于 2013-03-19T09:30:18.490 に答える
1

重複の可能性:2色の縞模様の背景?

xmlあなたはそれを作成する方法とそれを設定する方法の両方を見ることができますdynamic

于 2013-03-19T09:30:44.530 に答える