이것을 구현하는 방법은 두 가지가 있습니다. 1) imageView에 패딩을 추가하고 배경색을 설정합니다. 당신은 당신이 (그릴하려는 행의 중간을주고 있습니다
@Override
protected void dispatchDraw(Canvas canvas)
{
borderDrawable.draw(canvas);
super.dispatchDraw(canvas);
}
...
public class BorderDrawable extends Drawable{
private Rect mBounds;
private Paint mBorderPaint;
public BorderDrawable(Rect bounds, int thickness, int color)
{
mBounds = bounds;
mBorderPaint = new Paint();
mBorderPaint.setStrokeWidth(thickness);
mBorderPaint.setColor(color);
}
@Override
public void draw(Canvas canvas){
//left border
canvas.drawLine(mBounds.left - thickness/2,mBounds.top,mBounds.left - thickness/2,mBounds.bottom,mBorderPaint);
//top border
canvas.drawLine(mBounds.left, mBounds.top - thickness/2,mBounds.right, mBounds.top - thickness/2, mBorderPaint);
//right border
canvas.drawLine(mBounds.right + thickness/2, mBounds.top,mBounds.right + thickness/2,mBounds.bottom, mBorderPaint);
//bottom border
canvas.drawLine(mBounds.left, mBounds.bottom + thickness/2, mBounds.right, mBounds.bottom + thickness/2, mBorderPaint);
}
}
참고 :
final ImageView imageView = new ImageView(context);
imageView.setPadding(2*border,2*border,0,0);
final ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(width,height);
params.leftMargin = marginYouWouldSet + border;
params.topMargin = marginYouWouldSet + border;
imageView.setBackgroundDrawable(drawable);
imageView.setBackgroundColor(borderColor);
addView(imageView, params);
2) 또 다른 옵션은 뷰의 그리기 방법을 무시하고이 국경을 그릴 것입니다!) 또한 실행하지 않았거나 컴파일하지 않았으므로 올바른지 100 % 확신 할 수는 없지만 다음과 같은 방법이 있습니다. 사각형 경계는 뷰의 경계 사각형이어야합니다. - (0,0, width, height).
합니다. 내가 이미지를 드레싱 할 때 테두리가 그 좌표에 남습니다. border-bounds (ImageMatrix 업데이트와 병행)가 업데이트되지만 작동하지 않는 CustomView.setBorder 메서드를 추가했습니다. 나는 무언가를 불러야합니까? 아. 뭔가 잘못 된 것처럼 보입니다. 이제 그 일. – andineupert