使用路径绘制多个视图(Android)

时间:2013-09-17 17:24:47

标签: java android

我在同一相对布局中绘制多条路径时遇到了很多问题。会发生的是我的所有路径都是在最初绘制的相同位置绘制的。相反,我想缩小每个绘制的路径/画布,并将它们并排显示在页面上。

我绘制路径的代码看起来像

    for (int x=0; x < paths.size(); x++){
        DrawView dw = new CustomView(this);
        dw.path = paths.get(x);
        dw.paint = paints.get(x);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        if (x == 0){

        } else {
            params.addRule(RelativeLayout.BELOW, x-1);
        }
        dw.setId(x);
        layout.addView(dw, params);
    }

我按照TextView的其他建议添加了一个自定义布局参数,以便在彼此之下显示每个TextView,但这似乎不适用于动态绘制的路径。

注意:CustomView是一个扩展View并覆盖onDraw方法以绘制路径的类。

编辑:

如果它有助于我的自定义类看起来像

public class CustomView extends View {

    public Path path;
    public Paint paint = new Paint();

    public CustomView(Context context){
        super(context);
        paint.setAntiAlias(true);
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.STROKE);
    }

    @Override
    protected void onDraw(Canvas canvas){
        canvas.drawPath(path, paint);
    }
}

1 个答案:

答案 0 :(得分:1)

您是否有必要使用RelativeLayout?如果它没有太多绑定,请考虑使用LinearLayout替换RelativeLayout,或者包含在RelativeLayout中。然后,您可以将所有CustomView添加到此LinearLayout,将LinearLayout.LayoutParams中的权重字段设置为1.

或者,考虑手动将每个CustomView的高度设置为getHeight()/(paths.size())而不是RelativeLayout.LayoutParams.WRAP_CONTENT。