2012-05-21 3 views
0

사용자가 이미지에 입력하는 값을 표시하려고합니다. 이미지의 버전은 4 가지입니다 (ldpi, mdpi, hdpi 및 xhdpi). 올바른 화면 크기로 조정되는 "고정 된"위치에 textViews를 배치하려고합니다.android position 이미지의 고정 된 위치에있는 TextView

나는 이것을 달성 할 수있는 방법에 대해 조언을 얻은 사람이 있습니까?

다음은 내가하려는 일의 스케치입니다. 빠른 응답

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

편집

감사합니다. 새 이미지를 업로드했습니다. 상대 레이아웃에서는 불가능합니다. 은 "RelativeLayout의"문서에서

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

+0

상대 레이아웃에 배치하고 왼쪽 textView의 경우 centeralHorizontal = "true"로 설정하고 맨 위 textView의 경우 centeralVertial = "true"로 설정합니다. –

+0

답변 주셔서 감사하지만 문제는 텍스트의 위치가 항상 중심이 아니며 이미지의 어느 위치 에나있을 수 있다는 것입니다. – evertvandenbruel

답변

1

봐는 : http://developer.android.com/reference/android/widget/RelativeLayout.html

당신은 당신의 이미지 뷰의 주위에 당신의 텍스트 뷰를 넣을 수 있습니다.

+0

내 목표에 대한 새로운 이미지를 추가했습니다. 상대 레이아웃에서는 이것이 가능하지 않다고 생각합니까? – evertvandenbruel

+0

흠, 새로운 그림으로, "AbsoluteLayout", 프로그래밍 방식으로 좌표를 계산하지만, 확실하지 않습니다 ... –

+0

그 클래스도 사용되지 않았지만 그 방법은 사용되지 않습니다. 가기? – evertvandenbruel

0

이 문제를 해결하는 가장 좋은 방법은 첫 번째 하위 이미지 뷰를 기대하는 사용자 지정 레이아웃을 만드는 것입니다.

다른 모든 아이들이 될 것입니다 텍스트 뷰의 당신도 할 수 있습니다 :

  • 위치를 상대적으로 높이와 일치하는 부모 사용자 지정 레이아웃의 높이/폭
  • 위치 비례하여 이미지 뷰의 위치/너비 ImageView

자녀 TextView의 왼쪽/위쪽 위치 정보는 사용자의 요구에 맞는 사용자 지정 LayoutParams 클래스를 통해 제공 될 수 있습니다.

0

내가보기에 가장 좋은 방법은 View 클래스를 확장하여 사용자 정의보기를 만드는 것입니다. 그것은 그렇게 보일지도 모른다. Here 사용자 정의 UI 구성 요소에 대한 자세한 정보를 찾을 수 있습니다.

주요 아이디어는 onDraw (캔버스 캔버스) 및 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을 사용하여 텍스트를 측정 할 수 있습니다.