2017-05-03 4 views
-1

레이아웃에 추가하기 전에 뷰의 높이와 너비를 가져와야합니다. 나는 MeasuredHeight와 MeasuredWidth를 사용하여 뷰를 시도했지만 retursn은 0으로 시도했다. 이것을 해결하기 위해 나를 도울 수 있겠습니까? 코드 아래보기의 높이와 너비를 얻는 방법?

나는 밖으로 시도 :

int height = Column.MeasuredHeight; 
int width = Column.MeasuredWidth; 
+0

레이아웃을 설정하기 전에 원하는 이유는 무엇입니까? –

+0

시도해주세요. http://stackoverflow.com/a/9426895/5577679 – tompadre

+0

@tompadre 업데이트 해 주셔서 감사합니다. Column.Measure (View.MeasureSpec.MakeMeasureSpec (0, MeasureSpecMode.Unspecified), View.MeasureSpec.MakeMeasureSpec (0, MeasureSpecMode.Unspecified)); int colHeight = Column.MeasuredHeight; 이 솔루션을 사용하면 열의 실제 높이가 표시되지 않습니다. – Parthiban

답변

0

view.getWidth()와 view.getHeight를()는 0을 수신 할 수있는 레이아웃 변경 이벤트를 사용할 필요가

+0

입니다. 이미 사용해 보았습니다. 또한 0을 반환합니다. – Parthiban

0
View view= LayoutInflater.from(this).inflate(R.layout.activity_main, null, false); 
setContentView(view); 
int viewWidth = view.getWidth(); 
int viewHeight = view.getHeight(); 
+1

코드에 대한 약간의 설명이 유용 할 것입니다. – Sakuto

1

시도 높이로. 너무 빨리 요청하면 레이아웃이 아직 그려지지 않습니다. 측정 할 레이아웃의 ViewTreeObserver를 사용하십시오.

LinearLayout linearLayout = FindViewById<LinearLayout>(Resource.Id.linearLayout); 
ViewTreeObserver vto = linearLayout.ViewTreeObserver; 

vto.GlobalLayout += (sender, args) => { 
    System.Console.WriteLine (linearLayout.Height); 
}; 
+0

업데이트 해 주셔서 감사합니다. 그러나이 이벤트는 이후에 열 높이를 설정합니다. 그 전에이 행사에 전화해야 겠어. – Parthiban

+0

@Parthiban 설정 한 열 높이를 vto.GlobalLayout에 넣을 수는 없습니까? –

+0

설정할 수 있습니다. 그러나이 전역 레이아웃 이벤트는 내 메서드가 호출 된 후에 트리거됩니다. – Parthiban

관련 문제