Zoomlayout: Cómo dibujar una vista personalizada en ZoomLayout

Creado en 28 sept. 2020  ·  5Comentarios  ·  Fuente: natario1/ZoomLayout

¿Cómo puedo?

¿Cómo dibujo mi vista personalizada que se puede ampliar con el uso de esta biblioteca?

package com.example.mindmapping;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.otaliastudios.zoom.ZoomLayout;

public class MainActivity extends AppCompatActivity {

    <strong i="7">@Override</strong>
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        MindMap map = new MindMap(this);

        setContentView(R.layout.activity_main);
        ZoomLayout zoomLayout = findViewById(R.id.zoomLayoutContainer);
        zoomLayout.addView(map);
        setContentView(map);

    }
}

Donde el mapa es una vista personalizada, extiende la vista y anula el método de dibujo, contiene otros elementos como TextElement y otros que también son vistas personalizadas o que se extienden desde el diseño lineal y contienen una vista de texto: como este

package com.example.mindmapping;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
import android.widget.Toast;

public class MindMap extends View {

    private Context context;
    private Canvas canvas;
    private Paint brush;

    //Canvas Variables
    private float centerMarginX;
    private float centerMarginY;
    private float mWidth;
    private float mHeight;

    public MindMap(Context context) {
        super(context);
        this.context = context;

        initSetup();
    }

    <strong i="11">@Override</strong>
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        this.canvas = canvas;

        initDrawing();
    }

    public void initSetup() {
        brush = new Paint(Paint.ANTI_ALIAS_FLAG);
    }

    public void initDrawing() {

        brush.setStyle(Paint.Style.STROKE);
        brush.setStrokeWidth(10);
        brush.setColor(Color.parseColor("black"));
        canvas.drawText("Helo ",50,50,brush);

        mWidth = getMeasuredWidth();
        mHeight = getMeasuredHeight();

        centerMarginX = mWidth / 2;
        centerMarginY = mHeight / 2;

        TextElement textElement = new TextElement(context, "Main Topic");
        textElement.setX(centerMarginX - (textElement.getLayoutWidth() / 2));
        textElement.setY(centerMarginY - (textElement.getLayoutHeight() / 2));
        textElement.draw(canvas);

        TextElement textElement1 = new TextElement(context, "Another One");
        textElement1.setX(textElement.getX() + textElement.getLayoutWidth() + 600);
        textElement1.setY(textElement.getY() - textElement.getLayoutHeight());
        textElement1.draw(canvas);

        Toast.makeText(this.context,"Drawn",Toast.LENGTH_SHORT).show();
    }
}

La vista personalizada (mapa en este caso) no se dibuja en ZoomLayout aunque se llama al método onDraw, pero cuando configuro el mapa en setContentView en lugar del archivo de diseño y no uso ZoomLayout, el mapa se dibuja en el lienzo, quiero para dibujar mi vista personalizada que debería ser ampliable con esta biblioteca

Versión utilizada

1.8.0

question

Comentario más útil

Gracias !

Necesitaba llamar a setMeasuredDimension en onMeasure anulado, porque esta es una vista completamente personalizada, ¡documentos!

Mi problema ha sido resuelto.

Todos 5 comentarios

No se dibuja nada en el lienzo, ni siquiera ese texto de helo, dibujado en initDrawing ()

que setContentView ha sido llamado nuevamente para configurar el mapa como una vista como prueba, era un comentario, eliminarlo no resuelve el problema

whatever

Su vista personalizada puede dibujarse con tamaño 0. Intente depurar su diseño, ya sea utilizando la configuración del desarrollador en el dispositivo / emulador, o mediante el inspector de diseño de Android Studio.

Gracias !

Necesitaba llamar a setMeasuredDimension en onMeasure anulado, porque esta es una vista completamente personalizada, ¡documentos!

Mi problema ha sido resuelto.

¿Fue útil esta página
5 / 5 - 1 calificaciones

Temas relacionados

aouledissa picture aouledissa  ·  10Comentarios

Yahor10 picture Yahor10  ·  5Comentarios

YiHaoHuang picture YiHaoHuang  ·  10Comentarios

natario1 picture natario1  ·  13Comentarios

lucasrsv picture lucasrsv  ·  3Comentarios