Ich habe gerade versucht, herauszufinden, wie das geht, und konnte online keinen guten Leitfaden finden, habe es aber schließlich herausgefunden. Wie Steve Pomeroy vorgeschlagen hat, müssen Sie etwas mehr tun. Um den umrissenen Texteffekt zu erzielen, zeichnen Sie den Text zweimal: einmal mit einem dicken Umriss und dann das zweite Mal, wenn wir den Haupttext über den Umriss zeichnen. Die Aufgabe wird jedoch erleichtert, da Sie sehr einfach eines der mit dem SDK gelieferten Codebeispiele anpassen können, nämlich das unter diesem Namen in Ihrem SDK-Verzeichnis: "/ samples / android- / ApiDemos / src / com / example / android /apis/view/LabelView.java ". Was auch auf der Android-Entwickler-Website hier zu finden ist .
Je nachdem, was Sie tun, ist es sehr leicht zu erkennen, dass Sie nur geringfügige Änderungen an diesem Code vornehmen müssen, z. B. Änderungen an TextView usw. Bevor ich dieses Beispiel entdeckte, habe ich vergessen, onMeasure () zu überschreiben (was Sie müssen zusätzlich zum Überschreiben von onDraw (), wie im Handbuch "Erstellen benutzerdefinierter Komponenten" auf der Android Developer-Website erwähnt, dies tun. Dies ist ein Teil des Grundes, warum ich Probleme hatte.
Sobald Sie das getan haben, können Sie tun, was ich getan habe:
public class TextViewOutline extends TextView {
private Paint mTextPaint;
private Paint mTextPaintOutline;
...
private void initTextViewOutline() {
mTextPaint = new Paint();
mTextPaint.setAntiAlias(true);
mTextPaint.setTextSize(16);
mTextPaint.setColor(0xFF000000);
mTextPaint.setStyle(Paint.Style.FILL);
mTextPaintOutline = new Paint();
mTextPaintOutline.setAntiAlias(true);
mTextPaintOutline.setTextSize(16);
mTextPaintOutline.setColor(0xFF000000);
mTextPaintOutline.setStyle(Paint.Style.STROKE);
mTextPaintOutline.setStrokeWidth(4);
setPadding(3, 3, 3, 3);
}
...
...
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawText(mText, getPaddingLeft(), getPaddingTop() - mAscent,
mTextPaintOutline);
canvas.drawText(mText, getPaddingLeft(), getPaddingTop() - mAscent, mTextPaint);
}
Um den umrissenen Texteffekt zu erzielen, zeichnen Sie den Text zweimal: einmal mit einem dicken Umriss und dann das zweite Mal, wenn wir den Haupttext über den Umriss zeichnen.