Я рисую прямоугольники динамически в своем приложении, но по какой-то причине правая граница не появляется. Появляются три другие границы. Вот мой код для пользовательского представления:Правая сторона границы не указана
private class RectView extends View{
int leftX, rightX, topY, bottomY;
boolean isAppt;
private Paint rectPaint;
private Rect rectangle;
String time;
public RectView(Context context, int _leftX, int _rightX, int _topY, int _bottomY,
boolean _isAppt, String _time){
super(context);
leftX = _leftX;
rightX = _rightX;
topY = _topY;
bottomY = _bottomY;
isAppt = _isAppt;
time = _time;
init();
}
private void init(){
rectPaint = new Paint();
if(isAppt){
rectPaint.setARGB(144, 217, 131, 121);
rectPaint.setStyle(Style.FILL);
}
else{
rectPaint.setARGB(0, 0, 0, 0);
rectPaint.setStyle(Style.FILL);
}
if(leftX > rightX || topY > bottomY)
Toast.makeText(context, "Incorrect", Toast.LENGTH_SHORT).show();
rectangle = new Rect(leftX, topY, rightX, bottomY);
int height = bottomY;
int width = rightX - leftX;
MyUtility.LogD_Common("Height = " + height + ", Width = " + width);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width, height);
params.leftMargin = leftX;
params.rightMargin = 10;
setLayoutParams(params);
}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawRect(rectangle, rectPaint);
if(isAppt){
rectPaint.setColor(Color.RED);
rectPaint.setStrokeWidth(2);
rectPaint.setStyle(Style.STROKE);
canvas.drawRect(rectangle, rectPaint);
}
}
}
Что вызывает неправильная граница, чтобы не отображать?
Вряд ли правый край рисуется за пределами пользовательского вида; например, из-за ограничений, добавленных путем установки поля. –
Будет ли какой-либо способ иметь ограничения и все еще иметь обратный край? – SecretBit