2012-05-21 161 views
0

我試圖顯示用戶在圖像上輸入的值,有4個圖像版本(ldpi,mdpi,hdpi和xhdpi)。 我想將textView定位在適合屏幕大小的「固定」位置。android位置圖像上的「固定」位置上的TextView

有沒有人對我如何實現這一目標有一些建議?

這是我正在嘗試做的一個草圖。

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

編輯

感謝您的快速響應。 上傳了一張新圖片,我猜這是相對佈局不可能的?

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

+0

放置在相對佈局中,對於頂部textView,設置爲左側textView one和centeralVertial =「true」的centeralHorizo​​ntal =「true」。 –

+0

感謝您的答案,但問題是,文本的位置不是所有的時間中心,它可能在圖像中的任何地方。 – evertvandenbruel

回答

0

解決這個問題的最佳方法我認爲是創建一個自定義佈局,它需要ImageView作爲其第一個孩子。

所有其他的孩子會TextView的的,你可以:

  • 位置相對您的ImageView的到父自定義佈局的高度/寬度位置
  • 位置按比例的高度匹配/你的ImageView的寬度

子TextView的左/頂位置信息可以通過一個自定義的LayoutParams類來滿足你的需要。

0

我認爲最好的方法是通過擴展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); 
} 

你可以找到更多關於畫布類here的信息。 您也可以使用StaticLayout來測量文字。