我在同一相对布局中绘制多条路径时遇到了很多问题。会发生的是我的所有路径都是在最初绘制的相同位置绘制的。相反,我想缩小每个绘制的路径/画布,并将它们并排显示在页面上。
我绘制路径的代码看起来像
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);
}
}
答案 0 :(得分:1)
您是否有必要使用RelativeLayout?如果它没有太多绑定,请考虑使用LinearLayout替换RelativeLayout,或者包含在RelativeLayout中。然后,您可以将所有CustomView添加到此LinearLayout,将LinearLayout.LayoutParams中的权重字段设置为1.
或者,考虑手动将每个CustomView的高度设置为getHeight()/(paths.size())而不是RelativeLayout.LayoutParams.WRAP_CONTENT。