android位置TextView在图像上的“固定”位置

时间:2012-05-21 15:13:33

标签: android image textview location fixed

我正在尝试显示用户在图像上输入的值,有4个版本的图像(ldpi,mdpi,hdpi和xhdpi)。 我想将textViews放在一个“固定”位置,调整到正确的屏幕大小。

有没有人就如何实现这一目标提出一些建议?

这是我正在尝试做的草图。

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

修改

感谢您的快速回复。 上传了一个新图像,这是不可能的相对布局我猜?

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

3 个答案:

答案 0 :(得分:1)

查看“RelativeLayout”文档:http://developer.android.com/reference/android/widget/RelativeLayout.html

您可以将TextView放在ImageView周围。

答案 1 :(得分:0)

解决这个问题的最佳方法是创建一个自定义布局,期望ImageView成为它的第一个孩子。

所有其他孩子都可以是TextView:

  • 相对于ImageView的位置
  • 与您的父自定义布局的高度/宽度成比例的位置,与您的ImageView的高度/宽度相匹配

可以通过适合您需要的自定义LayoutParams类提供子TextView的左/上位置信息。

答案 2 :(得分:0)

我认为最好的方法是通过扩展View类来创建自定义视图。它看起来并不复杂。 Here您可以找到有关自定义UI组件的更多信息。

主要思想是覆盖onDraw(Canvas canvas)和onMeasure(int widthMeasureSpec,int heightMeasureSpec)方法。 在onMeasure中,您应该返回视图的尺寸,还可以计算矩形的大小和角度以及要绘制的文本的大小。或者,您可以实现自定义resize()方法,该方法将在您从活动中查看时显式调用,并进行文本和图像计算。

当您知道所有测量值时,您可以在onDraw(Canvas画布)方法中定位和绘制图像和文本。

@Override
    protected void onDraw(Canvas canvas) {

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

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

您可以找到有关Canvas class here的更多信息。 您也可以使用StaticLayout来衡量文字。