已解决:基本上,如果您将滚动视图/水平视图作为自定义视图的父视图,则必须覆盖onMeasure并指定自定义视图的尺寸,以便父滚动视图知道分配给它的空间,然后它会画画。
编辑:我发现问题是因为我想添加一个 换行到包含在scrollview中的相对布局。当我 删除滚动视图正确添加行。我不确定为什么.. 但我需要在我的应用程序中的scrollview ..任何想法为什么会这样 我将不胜感激,谢谢!
我试图在两个视图之间绘制一条线,但是它不起作用,onDraw没有被调用。
my custom view class:
public class DrawLine extends View {
Paint paint;
Idea idea;
IdeaVector ideaStartConnector;
IdeaVector ideaStopConnector;
Context mContext;
public DrawLine(Context context,Idea idea) {
super(context);
this.idea = idea;
this.mContext = context;
//这些只是定义中间的起点和终点 我有两个单独的自定义视图。
Idea stopConnectorIdea = IdeaTreeActivity.ideas.get(IdeaTreeActivity.ideas.size()-1);
ideaStartConnector= new IdeaVector(idea.topLeftVector.x + idea.getWidth()/2,idea.topLeftVector.y+
idea.getHeight()/2,mContext);
ideaStopConnector = new IdeaVector(stopConnectorIdea.topLeftVector.x +
stopConnectorIdea.getWidth()/2,stopConnectorIdea.topLeftVector.y+stopConnectorIdea
.getHeight()/2,mContext);
paint = new Paint();
paint.setColor(Color.GREEN);
}
protected void onDraw(Canvas canvas) {
Log.i("drawLine", "response");
canvas.drawLine(ideaStartConnector.x,ideaStartConnector.y,ideaStopConnector.x,ideaStopConnector.y,paint);
}
}
my main activity:
public void addIdeaToLayout(){
rl.addView(idea, params); //rl is my relative layout
DrawLine connectingLine = new DrawLine(this,idea);
connectingLine.setWillNotDraw(false);
rl.addView(connectingLine);
connectingLine.invalidate();
}
调试:
不确定这是否有用,这是对我的拖放的回应 其中一个观点的事件,我基本上想要一条连线之间 已删除的新视图和旧视图:
06-18 08:39:03.131 4568-4568 /? E / ScrollView:onTouchEvent中的pointerId = -1无效 06-18 08:39:04.784 1298-2004 /? D / gralloc_ranchu:gralloc_alloc:格式1和用法0x933意味着创建主机颜色缓冲区
[ 06-18 08:39:04.786 4568: 4568 D/ ]
HostConnection::get() New Host Connection established 0x915c9140, tid 4568
06-18 08:39:07.055 4568-4568 /? I / ViewRootImpl [IdeaTreeActivity]:报告丢弃结果:true 06-18 08:39:07.058 4568-4568 /? D / gralloc_ranchu:gralloc_unregister_buffer:退出HostConnection(是缓冲区处理线程) 06-18 08:39:07.058 1621-1648 /? W / InputEventReceiver:尝试完成输入事件但输入事件接收器已被处理。