Попытка нарисовать текст внутри прямоугольника, но всплывает над ним на Android - PullRequest
0 голосов
/ 30 сентября 2019

новая картинка Сейчас я пытаюсь нарисовать текст (число) внутри прямоугольника, который я рисую. Я хочу сделать 2048, чтобы узнать больше о случаях использования Android и Kotlin. Но когда я хочу создать плитки, у меня возникает большая проблема. Обычно числа предполагаются внутри прямоугольника, но в моем случае они на один прямоугольник выше исходного. Так что в последнем ряду фишек у меня нет цифр, а в верхней части есть цифры над фактическим игровым полем. Если вы на самом деле не понимаете мой вопрос, просто напишите комментарий, я постараюсь сделать его лучше.

Важно: просто изменить текстовую строку текста не поможет, она будет просто переписаназатем следующий прямоугольник.

Это мой класс, с помощью которого я рисую отдельные плитки:

fun drawTile() {
        var number = tile.number
        var cordX = tile.x
        var cordY = tile.y

        shapeDrawable = ShapeDrawable(RectShape())
        shapeDrawable.setBounds(cordX, cordY, tileWidth, tileHeight)

        shapeDrawable.getPaint().color = tile.tileColor
        shapeDrawable.draw(canvas)

        if(number != 0) {

            var paintText = Paint(Paint.ANTI_ALIAS_FLAG)
            paintText.color = Color.BLACK
            paintText.textSize = 50f

            val numberString = "$number"

            paintText.setShadowLayer(10f, 10f, 10f, Color.BLACK)

            canvas.drawText(numberString, cordX.toFloat()+tileWidth/2, cordY.toFloat()+10, paintText) 

        }

        shapeDrawable.draw(canvas)

Вот картинка, как это выглядит в игре

1 Ответ

0 голосов
/ 30 сентября 2019

на самом деле просто изменение координаты Y должно сделать свое дело, вам просто нужно нарисовать форму

fun drawTile() {
        var number = tile.number
        var cordX = tile.x
        var cordY = tile.y

        shapeDrawable = ShapeDrawable(RectShape())
        shapeDrawable.setBounds(cordX, cordY, tileWidth, tileHeight)

        shapeDrawable.getPaint().color = tile.tileColor

        shapeDrawable.draw(canvas)
        if(number != 0) {

            var paintText = Paint(Paint.ANTI_ALIAS_FLAG)
            paintText.color = Color.BLACK
            paintText.textSize = 50f

            val numberString = "$number"

            paintText.setShadowLayer(10f, 10f, 10f, Color.BLACK)

            canvas.drawText(numberString, cordX.toFloat() + tileWidth/2, cordY.toFloat() + tileHeight / 2, paintText) 

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...