Получение ширины при построении Деятельности - PullRequest
0 голосов
/ 08 февраля 2012

У меня проблема, и я не могу понять, что с этим делать.Я новичок в разработке под Android, но у меня есть опыт работы с Java.

Во время onCreate (связка), onPostCreate (связка) или любого другого подобного метода я не могу получить правильную ширину представления,Он возвращает 0. Я также сделал простую кнопку для целей отладки, и эта кнопка возвращает правильное значение.

Как мне вызвать метод, который получает ширину View после метода onCreate?Если это невозможно, что такое обходной путь?

Заранее спасибо,

Gerralt

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

Проблема в том, что вы пытаетесь узнать ширину, как только вы начинаете свою деятельность.Но на этой позиции действительное преобразование вашего взгляда не произошло бы.Android предоставляет специальный обратный вызов, чтобы найти ширину и высоту всех отдельных видов.Чтобы получить к нему доступ, вы должны переопределить метод onWindowFoucsChanged().Вот пример,

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
     // TODO Auto-generated method stub 
     super.onWindowFocusChanged(hasFocus);
     System.out.println("...Height..."+textview.getMeasuredWidth()); 
}

Эта строка textview.getMeasuredWidth() помогает вам найти фактическую ширину textView во время выполнения.Точно так же вы можете найти ширину и высоту для любого вида, используя этот метод.

0 голосов
/ 08 февраля 2012

Сделайте это onWindowFocusChanged () так:

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
            if(hasFocus && llfullscreen!=null){
        int layoutHeight = llfullscreen.getHeight(); 
                ViewGroup.LayoutParams params = lv.getLayoutParams();
        params.height = lv/2; //Set to half the screens size
        this.lv.setLayoutParams(params);
        this.lv.invalidate();
             }
    }
0 голосов
/ 08 февраля 2012

Как мне кажется, вы используете метод onCreate (Bundle):

public void onCreate(Bundle xxx) {
  super(xxx);

  // init some stuff here

  setContentView(R.layout.my_layout);

  // from THIS point you can get sizes of Views
}

Извините, если я ошибаюсь, но в моем проекте это работает.Хорошо, я должен сказать, что я часто использую собственные представления и использую размеры не в своем коде активности, а в коде просмотра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...