0

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

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

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

我遵循了其他关于TextViews 的建议来添加自定义布局参数以在彼此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);
    }
}
4

1 回答 1

1

你有必要使用RelativeLayout吗?如果它不太具有约束力,请考虑使用 LinearLayout 替换 RelativeLayout,或者包含在 RelativeLayout 中。然后你可以将所有的CustomViews添加到这个LinearLayout中,将LinearLayout.LayoutParams中的weight字段设置为1。

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

于 2013-09-17T17:39:58.247 回答