Ответ 1

Извините, этот вопрос уже задан. Я нашел здесь ответ - Как настроить представление Android на основе размеров его родителя

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
    this.setMeasuredDimension(parentWidth, parentHeight);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

Ответ 2

Просто получилось решение получить высоту и ширину пользовательского представления:

@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
    super.onSizeChanged(xNew, yNew, xOld, yOld);

    viewWidth = xNew;
    viewHeight = yNew;
}

Его работа в моем случае.

Ответ 3

Не пытайтесь получить их внутри своего конструктора. Попробуйте вызвать их в методе onDraw().

Ответ 4

Вы можете использовать следующий метод для получения ширины и высоты представления, Например,

int height = yourView.getLayoutParams().height;
int width = yourView.getLayoutParams().width;

Это дает преобразованное значение представления, указанное в макете XML.

Скажем, если указанное значение высоты составляет 53dp в XML, вы получите преобразованное значение в integer как 80.

Ответ 5

Я тоже был потерян около getMeasuredWidth() и getMeasuredHeight() getHeight() и getWidth() в течение долгого времени.......... позже я нашел способ onSizeChanged() ДЕЙСТВИТЕЛЬНО полезным.

Новое сообщение в блоге: как получить размеры ширины и высоты пользовательского вида (extends View) в Android http://syedrakibalhasan.blogspot.com/2011/02/how-to-get-width-and-height-dimensions.html

Ответ 6

Разница между getHeight() и getMeasuredHeight() заключается в том, что первый метод вернет фактическую высоту View, вторая возвращает итоговую высоту View. В словах oter, getHeight() возвращает высоту представления, getMeasuredHeight() возвращает высоту, которая должна отображаться всем этим элементам.

Ответ 7

Хорошо getheight получает высоту, а ширина getwidth. Но вы слишком быстро называете эти методы. Если вы вызываете их в oncreate или onresume, представление еще не нарисовано. Вы должны вызвать его после того, как изображение было нарисовано.