2014-07-09 3 views
0

저는 주로 xml이 아닌 코드에 의해 주도되는 Android 앱을 개발 중입니다.실제로 작성하기 전에 UI의 크기를 가져 옵니까?

ListView 용 어댑터는 항목의 높이를 알고 싶어합니다. 그러나 이것은 차례로 항목 내의 UI 요소의 크기에 따라 달라질 수 있습니다. 예를 들어 항목에 체크 박스가있는 경우 확인란의 크기가 목록 항목의 레이아웃에 영향을 미칠 수 있으며 줄 바꿈이 필요한지 여부에 따라 높이가 변경 될 수 있습니다.

질문 - 실제로 UI 요소를 만들지 않고 Android UI 요소의 크기를 가져 오는 방법이 있습니까? 그리기 전에 텍스트의 크기를 얻기 위해 Paint 또는 TextPaint 객체를 사용할 수있는 것과 비슷합니다.

답변

1

생성하지 않고서는? 아니요. 그러나 MeasureSpec 클래스를 사용하고 뷰를 만든 후에 수동으로 측정 할 수 있습니다. 왜 정확한 크기를 알아야합니까? 귀하의 경우 LayoutParams를 MATCH_PARENT (너비) 및 WRAP_CONTENT (높이)로 설정할 수 없습니까?

// Tell the View it should be exactly as wide as the ListView... 
int widthSpec = MeasureSpec.makeMeasureSpec(listViewWidth, MeasureSpec.EXACTLY); 

// ... and as tall as it wants to be ... 
int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); 

// ... measure it with these constraints ... 
item.measure(widthSpec, heightSpec); 

// ... and retrieve the measured height. 
int itemHeight = item.getMeasuredHeight(); 
:

은 당신이 알아야 할 경우, 당신은 MeasureSpec을 폭 MeasureSpec 대한 ListView의 폭을 사용하고 높이 다음 UNSPECIFIED 수 말했다
관련 문제