I have a FrameLayout in which I have 2 controls: - a custom view that draws an image and some text on it - a text image with text
I want to center both in FrameLayout, but I cannot do this. Texview is concentrated very well, my cusom gaze remains on the left side when I make it visible.
<FrameLayout android:id="@+id/CompassMap" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center"> <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"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|center_horizontal" android:text="CENTERED" /> </FrameLayout>
In Mathias I do nothing in the constructor, it's just simple
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(); } }
android layout gravity
Alin Oct. 29 '10 at 11:59 2010-10-29 11:59
source share