2012-04-18 2 views
1

Я хочу получить ширину макета в пикселях. Я попытался это:Как получить размер макета или больше, как высота и witdth в пикселях?

LinearLayout galleryContainer = (LinearLayout)findViewById(R.id.galleryContainerLayout); 
int galleryWidth= galleryContainer.getLayoutParams().width; 

если я тост из galleryWidth, он говорит, что "-1".

Я также попытался

galleryContainer.getWidth() 

но дает 0 в первый раз, то 480 (фактический размер) на второй раз, так как я получил пиксели прежде, чем мой макет пропитать его размер.

Какого черта?

Как я могу получить ширину макета в пикселях? Или некоторые точные значения, такие как dip?

ответ

1

Макет раздувается, но еще не нарисован. Чтобы получить ширину или высоту, вам нужно будет использовать метод ниже.

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    System.out.println("...Width..."+galleryContainer.getWidth()); 
} 
+0

Метод onWindowFocusChanged (boolean) типа ShopActivity.SendRating должен переопределить или реализовать метод супертипа Почему я получаю эту ошибку, если она уже переопределена? Чем более странным, тем затмение предлагает мне сделать это: 1 быстрое исправление: -Удалить аннотацию переопределения. Что ...? –

+0

r u используя этот метод в классе активности или неактивности ?. Эта проблема может возникнуть, если ваше соответствие java равно 1.6 или низкое. Вы должны изменить его на 1.7. или попробуйте удалить аннотацию переопределения и проверить. –

3

Использование measure() перед вызовом getWidth()

galleryContainer.measure(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); 
+0

получение аварии без excepetion с этим кодом. Для чего нужны теги .FILL_PARENT? Моя галереяКонтейнер не имеет ширины и высоты в fill_parent. Оба они являются match_parent. –

+0

есть три способа захвата снаряжения на экране для каждого виджета :: FILL_PARENT = захватить полный доступный экран, WRAP_CONTENT = отобразить требуемый экран для текущего виджета, Ручной размер, например. «10dp»/«10px» = согласно вашему выбору. Надеюсь, ты получишь то, что я имею в виду. – Harpreet

1

Не уверен, что для вас, но мы можем закодировать что-то вроде этого тоже проверить, если это помогает.

Display display = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
         int width = display.getWidth(); 
         int height = display.getHeight(); 

Удачи.

+0

Это не отвечает на вопрос вообще. –

 Смежные вопросы

  • Нет связанных вопросов^_^