2016-09-06 2 views
1

Я создаю модуль, имеющий класс (круглый), расширяющий линейный макет. Он содержит изображение и текстовое изображение.Как передать значение ширины/высоты макета в пользовательский класс вида

Когда в файле XML объявлен вид с круглым названием, назначаются значения layout_width и layout_height. Я хочу, чтобы размеры изображения были пропорциональны назначенным размерам макета. Следовательно, как передать размеры макета классу вида, чтобы я мог назначить пропорциональные размеры представлению изображения?

P.S .: Этот вопрос не касается прохождения пользовательских атрибутов. Но имеет дело с передачей android:layout_width и android:layout_height пользовательскому классу пользовательского интерфейса.

+0

Возможный дубликат [Android - пользовательский интерфейс с пользовательскими атрибутами] (http://stackoverflow.com/questions/7608464/android-custom-ui-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() даже если класс расширяет тип просмотра.