TextView на холсте

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


person user446010    schedule 19.10.2010    source источник
comment
Это тоже показывает путь.. [stackoverflow.com/questions/5242757/ [1]: stackoverflow.com/questions/5242757/   -  person Rukmal Dias    schedule 17.12.2012


Ответы (4)


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

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

person Rich    schedule 19.10.2010

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

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

person bryce    schedule 29.11.2011

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

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

person DavGin    schedule 19.10.2010

- поместите свой вид (который использует холст) внутри 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. Я не уверен, почему это происходит. Я пока не пробовал слишком много на нем наблюдать.

person Engin OZTURK    schedule 24.12.2012