1st answer:
Must be structure of layout likes here:
<LinearLayout
   android:widht_layout="80dp"
   android:height_layout="80dp"
   android:padding="10dp"
   android:gravity="center"
   android:layout_gravity="center"
   android:bacgkground="your_color ARGB"
   >
    <ImageView />
    <TextView />
</LinearLayout>
or 2nd answer:
Create custom view
public class customView extends View{
   public customView(Context context){
       super(context);
   }
   public customView(Context context, String s, Drawable d){
       super(context);
       // Set Width&Height for this view
       this.measure(80,80);
       // or layout params with specified height&width for this view
       Resources r = getResources();
       int width = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, **Your width**,
            r.getDisplayMetrics());
       int height = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, **your height**,
            r.getDisplayMetrics());
       ViewGroup.LayoutParams pp = new ViewGroup.LayoutParams(width,height);
       this.setLayoutParams(pp);
       TextView _text = new TextView(context);
       ImageView _image = new ImageView(context);
       _text.setText(s);
       _image.setBackground(d);
       this.addView(_image);       
       this.addView(_text);
   }
   public customView(Context context, String s, Bitmap b){
     ....
     _image.setImageBitmap(b);
     ...
   }  
}
also add view into root view #id=content of layout from activity:
findByView(R.id.content).addView(new customView((Context)this,"Your Text",getResources().getDrawable(R.drawable.icon));
or with parametr bitmap by path:
findByView(R.id.content).addView(new customView((Context)this,"Your Text",BitmapFactory.decodeFile("/sdcard/file.png"));