Несколько прямоугольников не рисуются на холстеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Несколько прямоугольников не рисуются на холсте

Сообщение Anonymous »

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

Я рисую прямоугольник и линию следующим методом с помощью ссылки

DrawView.java

Код: Выделить всё

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.View;

public class DrawView  extends View {
Paint paint = new Paint();
float mx,  my,  mdensity;
Paint mBGPaint, mTXTPaint,mLINEPaint,mBRDPaint;
String text;
public DrawView(Context context, float x, float y, float density, String text) {
super(context);
paint.setColor(Color.RED);
paint.setStrokeWidth(8);
paint.setStyle(Paint.Style.STROKE);

mx = x;
my = y;
mdensity = density;
this.text = text;
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
init();

mLINEPaint.setStrokeWidth(8);

//draw rect border
canvas.drawRect(100, 100, 200, 200, mBRDPaint);
//        //draw text
canvas.drawText(text, 150, 150, mTXTPaint);
//        //draw line

float x = mx+150;

canvas.drawLine(x, 10, x, 100, mLINEPaint);

}
public void init() {

//rectangle background
mBGPaint = new Paint();
mBGPaint.setColor(Color.parseColor("#80123456"));

//your text
mTXTPaint = new Paint();
mTXTPaint.setColor(Color.parseColor("#123456"));

//your line
mLINEPaint = new Paint();
mLINEPaint.setColor(0xFFFF00FF);

//rectangle border
mBRDPaint = new Paint();
mBRDPaint.setStyle(Paint.Style.STROKE);
mBRDPaint.setStrokeWidth(10);
mBRDPaint.setColor(Color.parseColor("#80123456"));
}
}
Теперь я пытаюсь добавить несколько представлений в LinearLayout с горизонтальной ориентацией, как показано ниже:

Код: Выделить всё

  float density = getApplicationContext().getResources().getDisplayMetrics().density;
DrawView drawView;

float x = 100, y = 200;
int count1 = 1;
int id;
LinearLayout  layout2 = new LinearLayout(this);

layout2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
layout2.setOrientation(LinearLayout.HORIZONTAL);

main_layout.addView(layout2);

DrawView drawView1;
CircleView circleView;
for (Map.Entry entry : map.entrySet()) {

String key = entry.getKey();
if (count1 < 2) {
x = dirButton.getX();
y = dirButton.getY();
}
drawView1 = new DrawView(this, x, y, density, key);
drawView1.setId(butId++);
drawView1.setLayoutParams(params);
layout2.addView(drawView1);

count1++;
x = x + 100;
}
Но когда я это делаю, на холст добавляется только одно представление, а другие не видны. У меня нет опыта работы с холстом в Android, я был бы рад, если бы кто-нибудь помог мне решить эту проблему.

Подробнее здесь: https://stackoverflow.com/questions/394 ... -on-canvas
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»