2013-11-12 3 views
0

Я пытаюсь нарисовать несколько прямоугольников внутри линейного макета, который находится внутри прокрутки. Это мой код для представления прямоугольника:Рисование нескольких прямоугольников внутри линейного макета

private class RectView extends View{ 

    int leftX, rightX, topY, bottomY; 
    boolean isAppt; 
    private Paint rectPaint; 
    private Rect rectangle; 

    public RectView(Context context, int _leftX, int _rightX, int _topY, int _bottomY, boolean _isAppt){ 
     super(context); 
     leftX = _leftX; 
     rightX = _rightX; 
     topY = _topY; 
     bottomY = _bottomY; 
     isAppt = _isAppt; 
     init(); 
    } 

    private void init(){ 

      rectPaint = new Paint(); 

     if(isAppt){ 
      rectPaint.setARGB(255, 0, 0, 255); 
      rectPaint.setColor(Color.BLUE); 
     } 
     else{ 
      rectPaint.setARGB(255, 0, 0, 0); 
      rectPaint.setColor(Color.WHITE); 
     } 
     rectPaint.setStrokeWidth(2); 
     rectPaint.setStyle(Style.STROKE); 
     rectangle = new Rect(leftX, topY, rightX, bottomY); 

    } 

    protected void onDraw(Canvas canvas){ 
     super.onDraw(canvas); 

     canvas.drawRect(rectangle, rectPaint); 
    } 

} 

И это, как я в настоящее время пытаюсь отобразить прямоугольники:

RectView rv = new RectView(context, 0, 100, 0, 100, true); 
firstDemarc.addView(rv); 
firstDemarc.postInvalidate(); 

firstDemarc является линейной компоновкой внутри моего Scrollview. В настоящее время я не вижу никаких прямоугольников. Функция onDraw не вызывается. Как правильно отображать прямоугольники внутри моего scrollview?

ответ

0

Вы должны дать посмотреть некоторые параметры макета:

int width = right - left; 
int height = bottom - top; 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height); 
params.leftMargin = left; 
params.topMargin = top; 
setLayoutParams(params); 

Когда вы рисуете прямоугольник, вам нужно сделать от 0,0 до ширины/высоты прямоугольника. Линейный макет будет обрабатывать позиционирование в соответствии с параметрами полей/макета.

+0

Это сработало! Спасибо. – SecretBit

Смежные вопросы