Bagaimana cara menggambar tampilan kustom saya yang dapat diperbesar dengan menggunakan perpustakaan ini?
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);
}
}
Di mana peta adalah Tampilan Kustom, memperluas Tampilan & Mengganti Metode onDraw, Ini berisi elemen lain seperti TextElement & Lainnya yang juga merupakan tampilan khusus atau memanjang dari tata letak linier dan berisi tampilan teks: Seperti Ini
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();
}
}
Tampilan kustom (peta dalam kasus ini) tidak digambar dalam ZoomLayout meskipun metode onDraw dipanggil tetapi ketika saya mengatur peta di setContentView alih-alih file tata letak dan tidak menggunakan ZoomLayout , Peta digambar di kanvas, saya ingin untuk menggambar tampilan khusus saya yang harus dapat diperbesar dengan perpustakaan ini
1.8.0
Tidak ada yang digambar di kanvas, bahkan teks helo itu, yang digambar di initDrawing()
setContentView itu telah dipanggil lagi untuk mengatur peta sebagai tampilan sebagai ujian, itu adalah komentar, menghapusnya tidak menyelesaikan masalah
Tampilan kustom Anda dapat digambar dengan ukuran 0. Coba debug tata letak Anda, baik menggunakan setelan pengembang di perangkat/emulator, atau melalui pemeriksa tata letak Android Studio.
Terima kasih !
Saya perlu memanggil setMeasuredDimension di override onMeasure , karena ini adalah tampilan yang sepenuhnya disesuaikan , docs !
Masalah saya telah terpecahkan.
Komentar yang paling membantu
Terima kasih !
Saya perlu memanggil setMeasuredDimension di override onMeasure , karena ini adalah tampilan yang sepenuhnya disesuaikan , docs !
Masalah saya telah terpecahkan.