Java 如何获取画布顶部和底部的参考以进行动态定位?

Java 如何获取画布顶部和底部的参考以进行动态定位?,java,android,android-imageview,android-canvas,android-paint,Java,Android,Android Imageview,Android Canvas,Android Paint,我在ImageView上有两个文本视图。我正在使用Canvas和Paint类在图片上绘制标题。我希望标题在图像顶部和文本视图顶部之间有大约20dp的间隙。有什么方法可以将这些值输入到Canvas.drawText()的y值中?文本原点类似于图像,它从左上方开始,对于顶部文本,只需将y原点设置为+20dp,对于底部文本,将y原点设置为text.height+20dp 中心文本: x = image.width/2 - text.width/2; 顶部文本Y轴 y = 20; 底部文本Y轴: y

我在ImageView上有两个文本视图。我正在使用
Canvas
Paint
类在图片上绘制标题。我希望标题在图像顶部和文本视图顶部之间有大约20dp的间隙。有什么方法可以将这些值输入到Canvas.drawText()的y值中?

文本原点类似于图像,它从左上方开始,对于顶部文本,只需将y原点设置为+20dp,对于底部文本,将y原点设置为text.height+20dp

中心文本:

x = image.width/2 - text.width/2;
顶部文本Y轴

y = 20;
底部文本Y轴:

y = image.height - 20 - text.height;
重要的是,在尝试获取绘制文本的宽度之前,请先测量文本

检查以下答案: 您可以点击此链接。它包含定位的详细说明。就你而言

您需要先创建文本

 textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
   textPaint.setColor(textColor);
   if (textHeight == 0) {
       textHeight = textPaint.getTextSize();
   } else {
       textPaint.setTextSize(textHeight);
   }

   piePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
   piePaint.setStyle(Paint.Style.FILL);
   piePaint.setTextSize(textHeight);

   shadowPaint = new Paint(0);
   shadowPaint.setColor(0xff101010);
   shadowPaint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));
像这样,你需要设置填充并将其放置在你想要的地方,如下图所示

// Account for padding
float xpad = (float)(getPaddingLeft() + getPaddingRight());
float ypad = (float)(getPaddingTop() + getPaddingBottom());

// Account for the label
if (showText) xpad += textWidth;

float ww = (float)w - xpad;
float hh = (float)h - ypad;

// Figure out how big we can make the pie.
float diameter = Math.min(ww, hh);
我从上面提到的URL获得了完整的代码

您需要将下面的代码添加到中心定位

 Paint yourPaint = new Paint();

  int xP = (canvas.getWidth() / 2);
  int yP = (int) ((canvas.getHeight() / 2) - ((yourPaint .descent()yourPaint .ascent()) / 2)) ;

        canvas.drawText(yourTextView, xP, yP, yourPaint);

我懂了。将文本视图的中心与画布的中心对齐怎么样?类似这样:y=image.height/2-text.height/2你能解释一下吗?我指的是画布的水平中心和文本视图的垂直中心,因此文本正好位于画布的顶部中心。哦,好吧,那样的话,我错了,它的宽度是:x=image.width/2-text.width/2,y=20(顶部文本),y=image.height-20-text.height(底部文本),我想我已经搞定了这个部分。现在我只想将文本视图的中心与画布的中心对齐。我的意思是在顶部和底部有两个文本视图。我希望我的文本视图在画布顶部和底部的同时,也出现在画布的垂直中心(宽度的一半)。因此,基本上我希望将文本视图的中心与画布的中心(宽度的一半)对齐