【问题标题】:android position TextView on "fixed" position on imageandroid在图像上的“固定”位置上定位TextView
【发布时间】:2012-05-21 15:13:32
【问题描述】:

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

有人对我如何实现这一点有一些建议吗?

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

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

编辑

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

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

【问题讨论】:

  • 放置在相对布局中,左侧 textView 设置为 centeralHorizo​​ntal="true",顶部 textView 设置为 centeralVertial="true"。
  • 感谢您的回答,但问题是文本的位置始终不是中心,它可能在图像中的任何位置。

标签: android image textview location fixed


【解决方案1】:

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

您将能够将 textView 放在 ImageView 周围。

【讨论】:

  • 我添加了我的目标的新图像,我想这对于相对布局来说是不可能的?
  • 嗯,对于你的新图片,我会说:“AbsoluteLayout”,以编程方式计算坐标,但我不确定......
  • 我也看到了,但该类已被弃用,所以这是要走的路吗?
  • 因此您可以使用RelativeLayout,并以编程方式修改TextViews的边距,具体取决于您想要放置它们的位置......
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

    @Override
        protected void onDraw(Canvas canvas) {
    
        myImageDrawable.setBounds(0,0,50,50);
        myImageDrawable.draw(canvas);
    
        canvas.drawText(myText, 10, 10, myTextPaint);
    }
    

    您可以找到有关 Canvas 类here 的更多信息。 您也可以使用StaticLayout 来测量文本。

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      相关资源
      最近更新 更多