Intereting Posts
Dalvik / CleanSpec.mk: 47: *** отсутствует разделитель. Стоп. Ошибка создания AOSP Этот класс обработчика должен быть статическим или может возникнуть утечка: AsyncQueryHandler Как разместить текстовое изображение справа и слева от макета? Как публиковать checkin в произвольном месте (например, foursquare) Как принудительно обновлять приложение при изменении базы данных требует обновления приложения Отображать текст над кнопкой без жесткого кодирования высоты в xml Глобальная «функция поиска» в целом приложении ClassCastException при добавлении LayoutParams Android – горизонтальная прокрутка нескольких видимых элементов Размер текста в дизайне Android TabLayout Разница между getView & getDropDownView в SpinnerAdapter Использование Mock Location в приложении Navigation Получение AppCompat не поддерживает текущее исключение функций темы после обновления до версии AppCompat v22.1.0 Android: опубликовать приложение с различными скриншотами, соответствующими различным языкам? Должен ли я импортировать android.graphics.camera или android.hardware.camera?

Нарисуйте текст внутри заполненного прямоугольника с помощью Canvas Android

Как нарисовать заполненный прямоугольник с указанными границами и внутри этого текста прямоугольника, который будет рисоваться с помощью Canvas Android? Я пытался

mPaint.setColor(Color.GREEN); canvas.drawText(mText, x, y, mPaint); mPaint.setColor(Color.BLACK); canvas.drawRect(x, y, x + w, y + h, mPaint); 

Но текст не находится внутри этого прямоугольника. Может ли кто-нибудь приятель сказать мне, как нарисовать прямоугольник, окружающий указанный текст, с учетом размера текста?

Здесь у меня есть жестко заданные значения x и y. Вы можете изменить их

  mpaint= new Paint(); mpaint.setColor(Color.RED); mpaint.setStyle(Style.FILL); paint2= new Paint(); paint2.setColor(Color.GREEN); paint2.setTextSize(50); //set text size float w = paint2.measureText(s)/2; float textSize = paint2.getTextSize(); @Override protected void onDraw(Canvas canvas) { paint2.setTextAlign(Paint.Align.CENTER); canvas.drawRect(300-w, 300 - textsize, 300 + w, 300, mpaint); canvas.drawText(s, 300, 300 ,paint2); //x=300,y=300 } 

Редактировать :

Его плохая идея назвать measureText в onDraw . Вы можете сделать это за пределами onDraw .

Также есть видео о производительности и почему вы должны избегать выделения в onDraw . https://www.youtube.com/watch?v=HAK5acHQ53E

Результирующий щелчок

Введите описание изображения здесь