Intereting Posts
Eclipse Indigo – Не удается установить плагин Android ADT Ошибка компиляции «многие-ко-многим» с использованием greendao для Android Как получить sdcard и вернуть и массив с файлами вне определенного формата? Как часто обновлять местоположение gps? Как использовать exoplayer для воспроизведения mp4, когда я загружаю его из локального прокси-сервера? Динамически созданное изображение в gridlayout не работает Разница между активностью и фрагментацией Использование квадратной библиотеки для создания http-запросов Как установить путь NDK для Android? Плавающая точка или фиксированная точка для Android NDK OpenGL-приложений? Получить друзей TagGable Facebook Android Показывать выпадающий список недавно введенного текста при нажатии на поле редактирования android. Как использовать artifactoryPublish для публикации релизов и отладки артефактов Android-Как узнать, запускается ли приложение в первый раз? Панель действий Android Три точки не отображаются

Как нарисовать текст с разными штрихами и цветами заливки?

Я хочу отобразить текст, как показано ниже в моем приложении. Для этого я использую класс Paint со стилем FILL_AND_STROKE . Но для установки цвета доступен только один метод setColor() .

Как установить различные цвета штриховки и заливки?

Текст с разными штрихами и цветами заливки

Внутренний пользовательский TextView (не работает в EditText):

 @Override public void onDraw(Canvas canvas) { final ColorStateList textColor = getTextColors(); TextPaint paint = this.getPaint(); paint.setStyle(Style.STROKE); paint.setStrokeJoin(Join.ROUND); paint.setStrokeMiter(10); this.setTextColor(strokeColor); paint.setStrokeWidth(strokeWidth); super.onDraw(canvas); paint.setStyle(Style.FILL); setTextColor(textColor); super.onDraw(canvas); } 

Не используйте FILL_AND_STROKE. Нарисуйте один раз с помощью FILL, а затем измените цвет и нарисуйте с помощью STROKE.

(Это работает для прямоугольников. Я не уверен, что STROKE работает вообще для текста. Вам придется попробовать его и узнать.)

Не совсем уверен, но, возможно, вы могли бы использовать это:

ссылка

  TextView test = (TextView) findViewById(R.id.test); test.setShadowLayer(float, float, float, int); 

Я использовал первое решение выше, чтобы придумать эту идею: положил более крупный текст STROKE, а затем наложил его на меньший текст FILL_AND_STROKE:

 mScorePaint = new TextPaint(); mScorePaint.setTextSize(63); mScorePaint.setStyle(Style.STROKE); mScorePaint.setStrokeJoin(Join.ROUND); mScorePaint.setStrokeMiter(10.0f); mScorePaint.setStrokeWidth(frameWidth/50.0f); // about 12 mScorePaint.setColor(0xffff0000); // black c.drawText(Integer.toString(mScore), x, y, mScorePaint); // red first mScorePaint.setStrokeWidth(frameWidth/125.0f); // about 5 mScorePaint.setColor(0xff000000); // red c.drawText(Integer.toString(mScore), x, y, mScorePaint); // black on top 

Потому что только FILL не видел ни одного из атрибутов Stroke и вышел очень тонким.