Ondraw方法不在自定义视图中调用

时间:2015-05-09 12:33:09

标签: android view custom-view viewgroup

我正在使用自定义ViewGroup和Android中的自定义视图制作自定义视图。

public class Custom_ViewGroup extends ViewGroup
{
public Custom_ViewGroup(Context context)
{
    super(context);
    addView(new OwnView(context));
}

public Custom_ViewGroup(Context context,AttributeSet attrs) 
{
    super(context, attrs);
    addView(new OwnView(context));
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
    // TODO Auto-generated method stub
}

class OwnView extends View
{
    public OwnView(Context context)
    {
        super(context);
        System.out.println("on constructor");
    }
    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);

        System.out.println("ondraw child");
    }
  }
}

OwnView类的onDraw()方法没有调用。调用OwnView类的构造函数。我在添加视图后使用了invalidate()方法,但它没有用。

1 个答案:

答案 0 :(得分:1)

这是你的问题

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
    // TODO Auto-generated method stub
}

你的观点从来没有布局过,所以它不会画出来。您需要正确实施onLayout方法。另外,如果您的ViewGroup仅包含一个视图,请考虑使用FrameLayout代替ViewGroup