invalidate()没有绘制我的自定义视图

时间:2017-06-18 07:40:54

标签: android view line ondraw invalidation

已解决:基本上,如果您将滚动视图/水平视图作为自定义视图的父视图,则必须覆盖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:尝试完成输入事件但输入事件接收器已被处理。

0 个答案:

没有答案