Я изменение height
и width
из моих CustomView
которая простирается Android View
во время выполнения, как это:Изменение размера пользовательского вида в режиме исполнения Android
@Override
public void onGlobalLayout() {
if(!initialized) {
int containerHeight = instance.getHeight();
int containerWidth = instance.getWidth();
myView.getLayoutParams().height = (int) (containerHeight * HEIGHT_RATIO);
myView.getLayoutParams().width = (int) (containerWidth * WIDTH_RATIO);
instance.getViewTreeObserver().removeGlobalOnLayoutListener(this);
initialized = true;
}
}
этот код находится в container view
Конструктора.
Кроме того мой CustomView
onMeasure()
выглядит следующим образом:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// maximum width we should use
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(width, height);
}
Это результат:
Где width
и height
я указал в том же размере зеленого прямоугольника ,
Мой вопрос: почему фактический размер моего пользовательского вида (красный прямоугольник) не в том же размере, как я дал в качестве входных данных в LayoutParams
?
Попробуйте прокомментировать ваш onMeasure(), я не думаю, что вам это нужно в его текущей реализации. – Karakuri
Это не помогло. Я использую эту реализацию, чтобы сократить время измерения моего представления, так как я знаю, что в моем случае размер всегда точен. –