1

textView またはその他の種類のテキスト表示のテキストの半分が強調表示され、残りの半分が強調表示されないものが必要です。例えば

「テキストビュー」で。「テキスト」は赤いフォントで、「ビュー」は黒で表示されます。

2つのtextViewを直接重ねることでこれを行うことを考えていましたが、これを行う方法が正確にはわかりません。(どのようなパラメータなど?) 何かアイデアはありますか?

ありがとうございました

4

1 に答える 1

0

またはなど、これをサポートするレイアウトを使用して、複数の textView をスタックできます。そうは言っても、(外観をより適切に制御できる) より良いアプローチは、カスタム ビューを作成し、キャンバスにテキストを自分で描画することだと思います。次のような方法でこれを行うことができます (私はこれをテストしていませんが、動作するはずです - ただし、いくつかの調整が必要になる場合があります)。FrameLayoutRelativeLayout

public class TwoPartTextView extends View
{

    private CharSequence part1 = "", part2 = "";
    private Paint mPaint;
    private int color1 = Color.BLACK, color2 = Color.BLACK;
    private Context context;
    private float part1Size = 12f, part2Size = 12f;
    private int strokeWidth = 2;

    public TwoPartTextView(Context context) {
        super(context);
        init(context);
    }

    public TwoPartTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public TwoPartTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context);
    }

    private void init(context) {
        this.context = context;
        mPaint = new Paint();
    }

    public void setText(CharSequence part1, int color1, part1Size, CharSequence part2, int color2, part2Size, strokeWidth) {
        this.part1 = part1;
        this.color1 = color1;
        this.part1Size = part1Size;
        this.part2 = part2;
        this.color2 = color2;
        this.part2Size = part2Size;
        this.strokeWidth = strokeWidth;
        mPaint.setStrokeWidth(strokeWidth);
    }

    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        mPaint.setColor(color1);
        mPaint.setTextSize(part1Size);
        canvas.drawText(part1.toString(), 0, paint.getTextSize(), paint);
        mPaint.setColor(color2);
        mPaint.setTextSize(part2Size);
        canvas.drawText(part2.toString(), getWidth()/2 /* tweak as needed*/, paint.getTextSize(), paint);
    }

}

それを使用するには、XML に追加するか、コードで作成してから、次のように呼び出します。

myTwoPartTextView.setText("text", Color.RED, 12f, "View", Color.BLACK, 14f, 2);
myTwoPartTextView.setText.invalidate();
于 2013-04-29T19:25:18.607 に答える