Question

J'ai créé l'enfant de RelativeLayout. Dans son constructeur, j'ai appelé:

    public CanvasHolder(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        layoutInflater.inflate(R.layout.canvas_holder, this);    
        this.draw(new Canvas());
    }

Et puis méthode de forçage onDraw ():

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        black.setARGB(255, 0, 0, 0);
        black.setAntiAlias(true);
        int halfWidth = this.getWidth() / 2;
        int height = this.getHeight();
        canvas.drawLine(0, 0, halfWidth, height, black);
    }

Non ligne a été apparu sur la vue. En outre, j'ai essayé de ne pas appeler "this.draw ()", mais rien ne se passe.

J'ai découvert que la taille est égale demi et 0. Pourquoi?

P.S. même si je mets largeur et la hauteur statiquement, rien ne changera. Si cela ne vous dérange pas, jetez un oeil sur cette application exemple: pourquoi rien n'est tiré? http://androidforums.com/attachment.php?attachmentid=21715&stc=1&d=1315232946

Était-ce utile?

La solution 2

J'ai trouvé une solution non-triviale. J'ai inited la vue par le constructeur avec 1 paramètre. Et puis j'inséré la vue personnalisée dans la mise en page et invalidate appelé () quand je avais besoin.

Autres conseils

Avez-vous écrasez le onMeasure? Voici la mienne est - vous pouvez constater que cela est appelé plusieurs fois alors que la vue est en cours de chargement, parfois avec 0 valeurs:

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

    int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec);

    if (parentHeight > 0) {
        this.setMeasuredDimension(parentWidth, parentHeight);
        // ... other stuff ...
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top