Java 直接在指定位图下绘制文本

Java 直接在指定位图下绘制文本,java,android,bitmap,android-recyclerview,java-canvas,Java,Android,Bitmap,Android Recyclerview,Java Canvas,到目前为止我已经知道了 我正试图直接在我绘制的位图下绘制文本。[1]. 但是,我不知道如何获得位图的坐标并调整它,使其位于其下方的中心 上面的图片就是我想要实现的。该应用程序的内容已被审查 总之,我如何得到我想要得到的文本的坐标 我正在使用ItemTouchHelper的onChildraw方法进行RecyclerView。您可以使用paint.getTextBounds来获取要在画布上绘制的文本的边界。获得文本的边界后,可以根据图标的位置计算绘制文本的位置 编辑: 这将在与图标相同的X位置对齐

到目前为止我已经知道了

我正试图直接在我绘制的位图下绘制文本。[1]. 但是,我不知道如何获得位图的坐标并调整它,使其位于其下方的中心

上面的图片就是我想要实现的。该应用程序的内容已被审查

总之,我如何得到我想要得到的文本的坐标

我正在使用ItemTouchHelper的onChildraw方法进行RecyclerView。

您可以使用paint.getTextBounds来获取要在画布上绘制的文本的边界。获得文本的边界后,可以根据图标的位置计算绘制文本的位置

编辑:

这将在与图标相同的X位置对齐图标下方的文本:

p.setColor(Color.parseColor("#D32F2F"));
RectF background = new RectF((float) itemView.getRight() + dX, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom());
c.drawRect(background, p);
icon = getBitmapFromVectorDrawable(MainActivity.this, R.drawable.ic_clear);
RectF icon_dest = new RectF((float) itemView.getRight() - 2 * width, (float) itemView.getTop() + width, (float) itemView.getRight() - width, (float) itemView.getBot
c.drawBitmap(icon, null, icon_dest, p); //[1]
p.setTextSize(50);
p.setColor(Color.WHITE);
c.drawText("Cancel",*/Insert x and y here*/,p);
这将在同一垂直线上对齐图标中心和文本中心:

float textX = icon_dest.left;
float textY = icon_dest.bottom + some_padding;

canvas.drawText("Cancel", textX, textY, textPaint);

进一步的解释和一个例子最好是具体的,计算位置,你会怎么做?另外,我使用的是RectF,而不是Rect,所以我不能使用getTextBounds,因为RectF没有参数而不是rectThank,但是RectF似乎没有getLeft或getBottom;在icon_dest中有图标的边界。使用该选项添加必要的填充以定位文本。
Rect textBounds = new Rect();
textPaint.getTextBounds("Cancel", 0, length, textBounds);

float iconCenterX = icon_dest.left + (icon_dest.width() / 2);
float textHalfWidth = (textBounds.right - textBounds.left) / 2;

float textX = iconCenterX - textHalfWidth;
float textY = icon_dest.bottom + somePadding

canvas.drawText("Cancel", textX, textY, textPaint);