0

サーフェス ビューの境界線の色を設定したい。このサーフェスビューの色を設定すると、その色で全体がカバーされます。表面ビューで実行されるビデオを非表示にします。

surfaceView = new SurfaceView(context);
surfaceView.setPadding(20, 20, 20, 20);
surfaceView.setBackgroundColor(Color.MAGENTA);

これもやってみた

surfaceView = new SurfaceView(context) {
    @Override
    protected void onDraw(Canvas canvas){
        canvas.drawColor(Color.MAGENTA);
        Rect border = new Rect(20, 20, surfaceView.getWidth() - 20, surfaceView.getHeight() - 20);
        Paint paint = new Paint();
        paint.setStrokeWidth(10);
        paint.setColor(Color.MAGENTA);
        canvas.drawRect(border, paint);
    }
};
surfaceView.setPadding(50, 50, 50, 50);

私もこれを試しましたが、それでも境界はありません。

表面ビューの境界線の色を設定するのを手伝ってください。

前もって感謝します。

4

1 に答える 1

1

表面ビューで使用しようとしcanvas.drawColor(Color.BLACK);ましたか? キャンバス自体がパディング領域をカバーしてはならないため、境界線があります。

他の解決策は、自分で境界線を描くことです:

// untested - written out of memory
onDraw(Canvas canvas) {
    canvas.drawColor(Color.BLACK);
    Rect border = new Rect(10, 10, width - 10, height - 10);
    mPaint.setLineWidth(10);
    mPaint.setColor(Color.MAGENTA);
    canvas.drawRect(border, mPaint);
    // draw more...
}

編集

輝かしいチャットで、OP は、SurfaceView を使用してビデオを描画することを明らかにしました。パディングをマージンに変更し、マゼンタで親ビューの背景を作成することを提案しました。

SurfaceView はビデオによって完全に上書きされるため、上記のソリューションはビデオの再生では機能しません。

要約すると、OPは必要なすべての情報を提供しなかったため、時間を無駄にしました. ありがとう。

于 2013-07-02T09:24:00.997 に答える