Добавление пользовательского прямоугольника в пользовательский RelativeLayout - PullRequest
1 голос
/ 24 декабря 2011

У меня есть собственный RelativeLayout, где я хочу динамически создавать прямоугольники.

Они не показаны в моем текущем коде, но я не знаю, в чем причина.

Пользовательский RelativeLayout:

public class DrawView extends RelativeLayout {

    public DrawView(Context context) {
        super(context);
        setFocusable(true);

        this.addView(new Rectangle(this.getContext()));
    }

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

    }

Пользовательский прямоугольник:

public class Rectangle extends View {

    public Rectangle(Context context) {
        super(context);
    }

    public Rectangle(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public Rectangle(Context context, AttributeSet attrs, int defStyle) { 
        super(context, attrs, defStyle); 
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint = new Paint();
        paint.setColor(Color.WHITE);

        canvas.drawRect(new Rect(), paint);

    }

}

EDIT: Решение было:

public class Rectangle extends View {

    public Rectangle(Context context) {
        super(context);
        init();
    }

    public Rectangle(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public Rectangle(Context context, AttributeSet attrs, int defStyle) { 
        super(context, attrs, defStyle); 
        init();
    }

    private void init() {
        this.setBackgroundResource(R.drawable.rectangle);

    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        int width = 150;
        int height = 50;

        setMeasuredDimension(width, height);
    }

}


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners
        android:radius="5sp"/>
    <gradient
        android:angle="315"
        android:startColor="#FFFF6666"
        android:endColor="#FFFF1111"
        android:type="linear"
        />
</shape>

1 Ответ

2 голосов
/ 24 декабря 2011

Я думаю, что вам не хватает, чтобы установить LayoutParams вашей фигуры. Попробуйте создать Rectangle объект, установите его ширину + высоту, а затем добавьте его к вашему RelativeLayout: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...