Как передать значение ширины / высоты макета в пользовательский класс представления
Я создаю модуль, имеющий класс (roundbutton), расширяющий линейное расположение. Он содержит просмотр изображений и просмотр текста.
Когда представление округлой кнопки объявлено в файле XML, присваиваются значения layout_width и layout_height. Я хочу, чтобы размеры изображения были пропорциональны назначенным размерам макета. Следовательно, как передать размеры макета классу представления, чтобы я мог назначить пропорциональные размеры представлению изображения?
PS: этот вопрос не касается передачи пользовательских атрибутов. Но имеет дело с передачей android:layout_width
а также android:layout_height
в пользовательский класс пользовательского интерфейса.
1 ответ
Я решил это, передав экземпляр представления методу, который требует значения. А потом использовать 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()
даже если класс расширяет тип представления.