2012-05-21 3 views
0

Я пытаюсь отобразить значения, которые пользователь вводит на изображение, есть 4 версии изображения (ldpi, mdpi, hdpi и xhdpi). Я хочу поместить текст в «фиксированное» место, которое настраивается на нужный экран.позиция для Android TextView на «фиксированном» месте на изображении

У кого-нибудь есть совет, как я мог бы это достичь?

Вот эскиз того, что я пытаюсь сделать.

http://dl.dropbox.com/u/251053/stackoverflow.png

редактировать

Спасибо за быстрый ответ. Загрузил новое изображение, это невозможно с относительной компоновкой, я думаю?

http://dl.dropbox.com/u/251053/stackoverflow1.png

+0

место в относительной компоновке и установлено как centeralHorizontal = "true" для левого textView one и centeralVertial = "true" для верхнего текста. –

+0

Спасибо за ответ, но проблема в том, что позиция текста не является центром все время, это может быть где угодно на изображении. – evertvandenbruel

ответ

1

Посмотрите на документацию "RelativeLayout": http://developer.android.com/reference/android/widget/RelativeLayout.html

Вы сможете разместить TextView вокруг ImageView.

+0

Я добавил новое изображение своей цели, я думаю, что это невозможно с относительной компоновкой? – evertvandenbruel

+0

Hum, с вашей новой картинкой, я бы сказал: «AbsoluteLayout», вычисляя координаты программно, но я не уверен ... –

+0

Я тоже это видел, но этот класс устарел, так что путь к идти? – evertvandenbruel

0

Лучший способ решить это, я думаю, это создать пользовательский макет, который ожидает, что ImageView станет его первым ребенком.

Все остальные дети будут TextView том, что вы можете:

  • положение относительно положения вашего ImageView
  • положение пропорционально высоте/ширине вашего родительского пользовательского макета, который соответствует высоте/width вашего ImageView

Информация о левом/верхнем положении дочернего объекта TextView может быть предоставлена ​​через собственный класс LayoutParams, который соответствует вашим потребностям.

0

Я думаю, что лучший способ - создать пользовательский вид, расширив класс View. Это не так сложно, как может показаться. Here вы можете найти дополнительную информацию о пользовательских компонентах пользовательского интерфейса.

Основная идея - переопределить методы onDraw (Canvas canvas) и onMeasure (int widthMeasureSpec, int heightMeasureSpec). В onMeasure вы должны вернуть размеры своего вида, а также рассчитать размер и угол прямоугольника, а также размер текста, который хотите нарисовать. Или вы можете реализовать собственный метод resize(), который будет явно вызываться на вашем представлении из действия и выполнять вычисления текста и изображения.

Когда вы знаете все измерения, вы можете позиционировать и рисовать как изображение, так и текст в методе onDraw (холст).

@Override 
    protected void onDraw(Canvas canvas) { 

    myImageDrawable.setBounds(0,0,50,50); 
    myImageDrawable.draw(canvas); 

    canvas.drawText(myText, 10, 10, myTextPaint); 
} 

Вы можете найти более подробную информацию о Canvas класса here. Также вы можете использовать StaticLayout для измерения текста.

Смежные вопросы