Android invalidate()不绘制自定义视图

Android invalidate()不绘制自定义视图,android,view,line,ondraw,invalidation,Android,View,Line,Ondraw,Invalidation,已解决:基本上,如果自定义视图的父视图为滚动视图/水平视图,则必须覆盖onMeasure并指定自定义视图的尺寸,以便父滚动视图知道分配给它的空间大小,然后绘制 编辑:我发现问题是因为我试图添加 行到包装在滚动视图中的相对布局。当我 删除滚动视图,查看是否正确添加了行。我不知道为什么。。 但我需要在我的应用程序中使用滚动视图。。你知道为什么会这样吗 将不胜感激,谢谢 我试图在我的两个观点之间划一条线,但是它不起作用,onDraw没有被调用 //这些只是定义了中间点之间的起点和终点 我有两个独立的自

已解决:基本上,如果自定义视图的父视图为滚动视图/水平视图,则必须覆盖onMeasure并指定自定义视图的尺寸,以便父滚动视图知道分配给它的空间大小,然后绘制

编辑:我发现问题是因为我试图添加 行到包装在滚动视图中的相对布局。当我 删除滚动视图,查看是否正确添加了行。我不知道为什么。。 但我需要在我的应用程序中使用滚动视图。。你知道为什么会这样吗 将不胜感激,谢谢

我试图在我的两个观点之间划一条线,但是它不起作用,onDraw没有被调用

//这些只是定义了中间点之间的起点和终点 我有两个独立的自定义视图

调试:

不确定这是否有用,这是对我拖放的响应 事件的其中一个视图,我基本上想在它们之间连接一条线 已删除的新视图和旧视图:

06-18 08:39:03.131 4568-4568/?E/ScrollView:onTouchEvent中的指针ID=-1无效 06-18 08:39:04.784 1298-2004/? D/gralloc_ranchu:gralloc_alloc:format 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_注销_缓冲区:退出主机连接(是缓冲区处理线程)
06-18 08:39:07.058 1621-1648/? W/InputEventReceiver:试图完成输入事件,但输入事件接收器已被释放。

连接线的大小是多少?adb shell dumpsys activity top的输出是什么?您好,连接线的大小是从drawline方法中的起始和结束坐标测量的。我不知道什么是adb shell,我在我的帖子末尾添加了调试,我;不过我不确定这是否是你想要的。感谢您adb shell dumpsys activity top的输出是什么?
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:04.786  4568: 4568 D/         ]
                                             HostConnection::get() New Host Connection established 0x915c9140, tid 4568