TextView на холсте - PullRequest
       34

TextView на холсте

1 голос
/ 19 октября 2010

Можно ли добавить TextView и ImageView на холст?

Ответы [ 4 ]

2 голосов
/ 30 ноября 2011

Это обходной путь, но этот урок добавляет текстовое представление к его холсту:

http://www.helloandroid.com/tutorials/how-draw-multiline-text-canvas-easily

2 голосов
/ 19 октября 2010

Canvas не наследуется от ViewGroup, поэтому у него нет возможности добавлять к нему дочерние представления.

В Canvas вы используете методы drawBitmap и drawText для рисования изображений и текста вместо добавления дочерних элементов управления, таких какTextView и ImageView.

0 голосов
/ 24 декабря 2012

- поместите ваш вид (который использует холст) внутри RelativeLayout,

public class YourComponent extends View{
@Override
protected void onDraw(Canvas canvas)

...

public void onDraw(){
....
....
ImageView yourImageView = .....

RelativeLayout.LayoutParams fParams = new RelativeLayout.LayoutParams(25,25);
fParams.leftMargin = 100; //x coordinate
fParams.topMargin  = 25;  /y coordinate
yourImageView.setLayoutParams(fParams);
((RelativeLayout) YourComponent.this.getParent()).addView(yourImageView);

}

}

над кодом: я создал параметры макета, которые показывают размеры 25x25 для вида.и после этого я использовал поля, чтобы установить правильную позицию на родительском макете.и установите этот LayoutParams для ImageView.и наконец, я добавил это imageView в родительский макет.

Но учтите, что во время выполнения onDraw () вызывающая операция на внешнем представлении может остановить onDraw ().поэтому, если вы хотите использовать этот способ, убедитесь, что вы уже выполнили все операции onDraw.Я не уверен, почему это происходит.Я еще не пытался наблюдать за этим слишком много.

0 голосов
/ 19 октября 2010

Если вам нужно свободно позиционировать ImageViews и TextViews, вы должны использовать RelativeLayout.

RelativeLayout имеет расширенные функции позиционирования и допускает перекрытие.

...