テキストの周りに非常に滑らかなストロークを作成するペイントを作成することができました。しかし、必要な場所に描画するのに問題があります。主に、TextViewではなくViewを拡張しているという事実を信じていますか?
私の目標は、レイアウト上の任意のテキストに線を引くことができるようにすることです。
DrawView.java
public class DrawView extends View{
Paint paint = new Paint();
String text = "Blank";
public DrawView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DrawView(Context context) {
super(context);
}
public void setText(String text) {
this.text = text;
}
public String getText() {
return text;
}
public void draw(Canvas canvas ) {
Paint strokePaint = new Paint();
strokePaint.setARGB(255, 0, 0, 0);
strokePaint.setTextSize(28);
//strokePaint.setTypeface(tf);
strokePaint.setStyle(Paint.Style.STROKE);
strokePaint.setStrokeJoin(Paint.Join.ROUND);
strokePaint.setStrokeCap(Paint.Cap.ROUND);
strokePaint.setStrokeWidth(9);
strokePaint.setAntiAlias(true);
Paint textPaint = new Paint();
textPaint.setARGB(255, 255, 255, 255);
textPaint.setTextSize(28);
//textPaint.setTypeface(tf);
textPaint.setAntiAlias(true);
canvas.drawText(text, 99, 99, strokePaint);
canvas.drawText(text, 99, 101, strokePaint);
canvas.drawText(text, 101, 99, strokePaint);
canvas.drawText(text, 101, 101, strokePaint);
canvas.drawText(text, 100, 100, textPaint);
super.draw(canvas);
}
}
xml
<com.shadow.pets.DrawView
android:id="@+id/energyText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
このビューは LinearLayout 全体をオーバーライドし、描画する場所を制御できませんか? TextView を拡張すると、まったく機能しなくなります。
混乱している場合は申し訳ありませんが、私はレールから外れているに違いないことを知っていますが、何時間も努力しており、それを明確にするための言葉を見つけることができません!