2016-09-06 1 views
1

선형 레이아웃을 확장하는 클래스 (둥근 버튼)가있는 모듈을 만듭니다. 그것은 이미지 뷰와 텍스트 뷰를 포함합니다.레이아웃 너비/높이의 값을 사용자 정의보기 클래스에 전달하는 방법

XML 파일에서 라운드 단추 뷰를 선언하면 layout_width 및 layout_height 값이 할당됩니다. 이미지 뷰 치수가 할당 된 레이아웃 치수에 비례하도록하고 싶습니다. 따라서 이미지 뷰에 비례 적 차원을 할당 할 수 있도록 레이아웃 차원을 뷰 클래스에 전달하는 방법은 무엇입니까?

P .:이 질문은 사용자 지정 특성 전달을 다루지 않습니다. 그러나 android:layout_widthandroid:layout_height을 사용자 지정 UI 클래스에 전달하는 것을 처리합니다.

+0

[Android - 사용자 정의 UI가있는 사용자 정의 UI] (http://stackoverflow.com/questions/7608464/android-custom-u-with-custom-attributes) –

+1

의 가능한 복제본이 질문은 그와 중복되지 않습니다. 사용자 지정 특성에 대해 이야기하는 것이 아닙니다. – suku

답변

0

뷰의 인스턴스를 값이 필요한 메서드에 전달하여이 문제를 해결했습니다. 그런 다음 getViewTreeObserver().OnGlobalLayoutListener()을 사용하십시오.

public void setIcon(final RoundedButton rb, final int drawableResourceId, final int position){ 
    mIconPosition = position; 

    rb.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      buttonWidth = rb.getWidth(); 
      buttonHeight = rb.getHeight(); 

      //whatever needs to be done with the dimensions 
     } 
    }); 
} 

클래스가보기 유형을 확장하는 경우에도 this.getViewTreeObserver().addOnGlobalLayoutListener()을 수행 할 수 없습니다.

관련 문제