Create ImageView programmatically without Layout

android, imageview, java, surfaceview

Solution

you can not do that this way. you need a container for both: For instance

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MyContainer(this));

    }
}

public class MyContainer extends LinearLayout {
  public MyContainer(Context context) {
    addView(new CanvasView(context));
    ImageView iv = new ImageView(context);
    iv.setImageResource(R.drawable.wand);
    addView(iv);
  }
}

remember that if you need to inflate the view directly from a xml file you need, for both `MyContainer` and `CanvasView` the constructor thats takes as parameters `Context` and `AttributeSet`

Problem

I'm trying to create an ImageView in code, setting the image resource and then add the ImageView as a child-view to my main view. All examples I found used a layout for that. But inside the constructor of my view I can't figure out how to do that. Here are the code snippets: ``` public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new CanvasView(this)); } } ``` The view: ``` public class CanvasView extends SurfaceView implements SurfaceHolder.Callback { public CanvasView(Context context) { super(context); SurfaceHolder sh = getHolder(); sh.addCallback(this); ImageView iv = new ImageView(context); iv.setImageResource(R.drawable.wand); // how to add iv to myself? } } ```

Original source