我创建了自己的观点。这是一个半圆形。我希望它将它对齐到屏幕的底部。因为,我使用drawArc绘制它,它不对齐底部。我尝试过设置一个圆心,其中心的y坐标与屏幕底部坐标共同发生。我不想使用它,因为我希望实现一些额外的东西。这是我的自定义视图代码。
package legacy_systems.customview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
public class CircleView extends View{
private Paint markerPaint;
private Paint textPaint;
private Paint circlePaint;
private int textHeight;
public CircleView(Context context)
{
super(context);
initCircleView();
}
public CircleView(Context context, AttributeSet attrs)
{
super(context, attrs);
initCircleView();
}
public CircleView(Context context, AttributeSet attrs, int defaultStyle)
{
super(context, attrs, defaultStyle);
initCircleView();
}
protected void initCircleView()
{
setFocusable(true);
circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setColor(getResources().getColor(android.R.color.black));
circlePaint.setStrokeWidth(3);
circlePaint.setStyle(Paint.Style.STROKE);
markerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
markerPaint.setColor(getResources().getColor(android.R.color.darker_gray));
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int measuredWidth = measure(widthMeasureSpec);
int measuredHeight = measure(heightMeasureSpec);
int d = Math.min(measuredWidth, measuredHeight);
setMeasuredDimension(d,d);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
int px, py;
px = getMeasuredWidth()/2;
py = getMeasuredHeight()/2;
int radius = Math.min(px, py);
RectF oval = new RectF();
oval.set(px-radius, py-radius, px+radius, py+radius);
canvas.drawArc(oval,180,180,false, circlePaint);
//canvas.drawCircle(px, py, radius, circlePaint);
canvas.save();
}
private int measure(int measureSpec)
{
int result = 0;
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
if(specMode == MeasureSpec.UNSPECIFIED)
{
result = 200;
}
else
{
result = specSize;
}
return result;
}
}
我想将半圆对齐到屏幕底部。我有什么想法可以做到吗?
答案 0 :(得分:3)
首先,感谢大家的回答。你的答案部分正确。是的,用
android:layout_alignParentBottom="true"
会做半个技巧。假设我画了一个圆圈。在自定义视图中,(0,0)表示视图最左边的坐标,而不是屏幕。并且假设有人希望半圈位于屏幕的底部,就像我想做的那样,协调猜测结果是一个问题。以下是我实际解决的问题。
px = getMeasuredWidth()/2;
py = getMeasuredHeight();
canvas.drawCircle(px, py, radius, paint);
此处,px
将是整个视图宽度的中心,视图宽度的中点,而py
将是分配给视图的最后一个y轴坐标。
希望它也可以帮助其他人。
答案 1 :(得分:1)
您可以尝试使用:
android:gravity="bottom"
或
android:layout_gravity="bottom"
属性。
答案 2 :(得分:0)
确保要放置/添加它的屏幕为RelativeLayout
。
在布局中执行此操作
<legacy_systems.customview.CircleView
android:id="@+id/myview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"/>
在onCreate()方法中
CircleView view = (CircleView) findViewById(R.id.myview);