Почему высота линейного размещения равна нулю - PullRequest
2 голосов
/ 31 мая 2011

Я создал linearlayout с layout:height="fill_parent" Я установил 3 кнопки и один TextView. Я могу видеть все. Но когда я хочу получить высоту linearlayout. Я использовал следующий код в методе onCreate. I am getting linear layout height as zero. Но моя высота линейного размещения является родительской. а также я могу видеть элементы, которые я добавил. Почему я не получаю фактическую высоту моего линейного макета.

LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_linearlayout);
System.out.println("...Height..."+mainLayout.getMeasuredHeight());

Спасибо Дипак

Ответы [ 3 ]

2 голосов
/ 31 мая 2011
0 голосов
/ 30 мая 2012

До OnCreate, OnResume, представление onStart еще не создано.Поэтому, если вы хотите получить высоту или ширину вида, выполните следующее и получите его

       observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
        {
            @Override
            public void onGlobalLayout()
            {
                SearchResultActivity.this.sideIndexHeight = SearchResultActivity.this.sideIndex.getHeight();
                ViewTreeObserver obs = sideIndex.getViewTreeObserver();
                obs.removeGlobalOnLayoutListener(this);
            }
        });

. Пожалуйста, получите новый TreeObserver для удаления, в противном случае вы получите исключение, TreeObserver не является живым

с переопределениемМетод onWindowFocusChanged, вы получаете высоту или ширину просмотра.Но если ваша деятельность запускается как дочерняя, то метод onWindowFocusChanged не будет вызван.Так что в этом случае используйте выше.

0 голосов
/ 31 мая 2011

Когда действие получает фокус, ему будет предложено нарисовать его макет.Платформа Android будет обрабатывать процедуру рисования, но Activity должна обеспечивать корневой узел своей иерархии макета.Смотрите эту ссылку просмотр чертежей и отступы макета и марги

...