Android: проблема с onMeasure () - PullRequest
3 голосов
/ 13 мая 2010

Я сделал пользовательский вид. Если я добавлю представление в XML-файл макета и установлю высоту fill_parent "specSize" вернет 0. Почему?

Код:

    @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int measuredHeight = 90;

        int specMode = MeasureSpec.getMode(heightMeasureSpec);
        int specSize = MeasureSpec.getSize(MeasureSpec.getMode(heightMeasureSpec));

        if(specMode != MeasureSpec.UNSPECIFIED){
         measuredHeight = specSize;
        }
        setMeasuredDimension(60, measuredHeight);
}

Кто-нибудь знает, как я могу получить рост fill_parent?

Ответы [ 2 ]

3 голосов
/ 13 мая 2010

Вам не нужно вызывать MeasureSpec.getMode внутри вызова для getSize. Вся идея спецификации меры состоит в том, чтобы объединить способ измерения (зная как Spec) и связанный с ним размер. См. Документацию по MeasureSpec.makeMeasureSpec методу. Поэтому правильный код будет выглядеть примерно так:

int widthSpec = MeasureSpec.getMode(widthMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
0 голосов
/ 24 ноября 2011

Правильный код будет:

int specMode = MeasureSpec.getMode(heightMeasureSpec);     ----This was already correct
int specSize = MeasureSpec.getSize(heightMeasureSpec);     ----This is corrected.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...