2

私は XML で四角形のビューを持っています:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle"> 

        <solid android:color="@color/lightblue"/> 
    </shape>

私が欲しいのはそれを半分に切ることなので、結果は次のようになります: ここに画像の説明を入力

出来ますか?はいの場合、どうすればそれを達成できますか?

ノート:

1) 回転した白い四角形を追加することは解決策ではありません。青い形状の切り取られた領域を透明に保つ必要があります (その下にはさらにビュー レイヤーがあります)。

2) rect の左下隅が少し丸くなっています (上の画像では描き忘れていました)。

4

2 に答える 2

3

ShapeDrawable次のように使用します。

Drawable d = new ShapeDrawable(new S(Color.BLUE, 32));

classSは customShapeです:

class S extends Shape {
    final int color;
    final float radius;
    Path path = new Path();

    public S(int color, float radius) {
        this.color = color;
        this.radius = radius;
    }

    @Override
    protected void onResize(float width, float height) {
        path.reset();
        path.moveTo(0, 0);
        path.lineTo(width, height);
        path.lineTo(radius, height);
        RectF oval = new RectF(0, height - 2 * radius, 2 * radius, height);
        path.arcTo(oval, 90, 90);
        path.close();
    }

    @Override
    public void draw(Canvas canvas, Paint paint) {
        paint.setColor(color);
        canvas.drawPath(path, paint);
    }
}

などDrawable dの呼び出しでView#setBackground()使用できるようになりましたTextView#setCompoundDrawables()

于 2016-12-18T18:06:08.563 に答える