android - Android setText 覆盖矩形的颜色
问题描述
我正在使用自定义视图创建棋盘
棋盘是使用canvas.drawRect()正常绘制的,它是使用两种颜色绘制的,白色和绿色
但是当我想使用canvas.drawText()绘制文本时,
我发现文本 在走到某个地方后覆盖了矩形
原始棋盘的颜色
颜色是绿色
在 onDraw 函数中,我通过嵌套 for 循环进行二维如下
假设棋盘是 8x8 cellSize 是矩形大小
for(int i = 0; i < rows; ++i) {
for(int j = 0; j < cols; ++j) {
if (visited[i][j] > 0) {
// if visited just draw the rectangle red
mPaint.setColor(Color.RED);
canvas.drawRect(j * cellSize, i * cellSize,
(j + 1) * cellSize, (i + 1) * cellSize, mPaint);
continue;
}
if (i == mCurPosition.x && j == mCurPosition.y) {
// centerY is calculated for alignment
canvas.drawText("@", j * cellSize + cellSize / 2, centerY, mPaint);
continue;
}
mPaint.setStyle(Paint.Style.FILL);
if ((i & 1) == 0 && (j & 1) == 0 || (i & 1) == 1 && (j & 1) == 1)
mPaint.setColor(Color.WHITE);
else
mPaint.setColor(Color.rgb(118, 150, 86));
canvas.drawRect(j * cellSize, i * cellSize, (j + 1) * cellSize, (i + 1) * cellSize, mPaint);
}
}
我尝试在第二个 if 条件下不使用 continue 语句,
但 '@' 似乎被矩形颜色覆盖
有没有办法解决这个问题?
谢谢
解决方案
推荐阅读
- node.js - 如何将 Express Web 项目转换为窗口独立应用程序
- laravel - 如何将带 id 的 href 传递给控制器方法 Laravel
- java - Nexus 6P 上硬件传感器的 Android 采样率变化
- sql - 创建通过在另一列中使用相似值分组的列
- stm32 - 在 stm32f4 和 arduino 之间通信时出现 SPI 问题
- javascript - 按年和周数获取日期并返回周数和年数
- swift - 从任何类型转换为字符串崩溃
- qt - 如何在兄弟 QVideoWidget 之上创建一个透明的 QWidget?
- java - 使用多线程在特定时间内更改 javafx 圆圈颜色
- c# - 使用 xpath 时访问了错误的 xml 节点