title: Android center view in FrameLayout doesn't work
body: <p>I have a FrameLayout in which I have 2 controls: 
  - a custom view which draws a image and some text on it
  - a textview with a text</p>
  
  <p>I want to center both in the FrameLayout but I can't manage to do it. The Texview is centered just fine, my cusom view remains on the left side, when I make it visible.</p>
  
  <pre><code>&lt;FrameLayout android:id="@+id/CompassMap"
                 android:layout_width="fill_parent" 
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:gravity="center"&gt;
  
               &lt;view class="com.MyView"
          android:id="@+id/myView"
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content"
          android:layout_gravity="center_vertical|center_horizontal"
          android:visibility="gone"/&gt;
  
                  &lt;TextView android:layout_width="wrap_content" 
          android:layout_height="wrap_content"
          android:layout_gravity="center_vertical|center_horizontal"
          android:text="CENTERED" /&gt; 
  &lt;/FrameLayout&gt;
  </code></pre>
  
  <p>To Mathias, I don't do anything in the constructor, it's just simple</p>
  
  <pre><code>   public class MyMapView extends View {
  
  private int xPos = 0; 
  private int yPos = 0;
  private Bitmap trackMap;
  
  private Matrix backgroundMatrix;
  private Paint backgroundPaint;
  
  private Bitmap position;
  private Matrix positionMatrix;
  private Paint positionPaint;
  
  public MyMapView(Context context) {
      super(context);
      init(context, null);
  }
  
  public MyMapView(Context context, AttributeSet attrs) {
      super(context, attrs);
      init(context, attrs);
  }
  
  public MyMapView(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
      init(context, attrs);
  }
  
  private void init(final Context context, AttributeSet attrs) {
  
  backgroundMatrix = new Matrix();
  backgroundPaint = new Paint();
  backgroundPaint.setFilterBitmap(true);
  
  position = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.position);
  positionMatrix = new Matrix();
  
  positionPaint = new Paint();
  positionPaint.setFilterBitmap(true);
  }
  
  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec));
  }
  
  @Override
  protected void onDraw(Canvas canvas) {
  
      int width = getMeasuredWidth();
      int height = getMeasuredHeight();
  
      if (trackMap!=null)
      {
          Bitmap resizedBitmap = Bitmap.createScaledBitmap(trackMap, height, height, true);
          canvas.drawBitmap(resizedBitmap, backgroundMatrix, backgroundPaint);
  
      }
  
          canvas.save(Canvas.MATRIX_SAVE_FLAG);
          canvas.translate(xPos-position.getWidth()/2, yPos-position.getHeight()/2);
          canvas.drawBitmap(position, positionMatrix, positionPaint);
  
          canvas.restore();
  }
  
      public void updatePosition(int xpos, int ypos, Bitmap trackImage)
      {
          xPos=xpos;
          yPos=ypos;
          trackMap = trackImage;
          invalidate();
      }
  }
  </code></pre>