PopupWindow Ширина и Высота - PullRequest
       15

PopupWindow Ширина и Высота

3 голосов
/ 04 августа 2011

ОК, так что я начинаю изучать создание приложений для Android, ну, по крайней мере, столько, сколько программист может сделать за несколько дней - я горжусь тем, что я узнал до сих пор.

В любом случае,Я хочу принудительно войти в основной вид деятельности - я делаю это, выбирая SharedPrefernece, а затем проверяю, является ли этот фрагмент информации нулевым, а затем получаю PopupWindow, содержащее поля и параметры «входа».

ЭтоPopupWindow имеет Flipper внутри, что нормально, и я работал нормально, когда были выбраны определенные параметры.

У меня возникают проблемы с отображением этого PopupWindow, чтобы оно соответствовало размеру содержимого (wrap_content), как при установкеPopupWindow.setAtLocation ()

Теперь вот что я пытался сделать, чтобы получить размер всплывающего окна - как уже упоминалось несколько раз здесь:

popup.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
final PopupWindow pw = new PopupWindow(popup,popup.getMeasuredHeight(),popup.getMeasuredWidth(), true);

Обратите внимание, что всплывающее окноявляется фактическим макетом всплывающего окна, pw - фактическим объектом PopupWindow.

Теперь я хочу получить фактический размер только всплывающего окна.окно (таким образом, чтобы оно не растягивалось по всей странице, а просто в центре, должно выглядеть как обычное всплывающее окно.

Кроме того, с помощью ViewFlipper.Я хочу, чтобы он обновлял размер всплывающего окна при переключении страниц (поэтому размер страницы должен увеличиваться и уменьшаться для каждой страницы). Есть ли способ заставить это работать?Я попробовал pw.update (), но это не сработало.

1 Ответ

1 голос
/ 11 апреля 2012

Вы хотите измерить фактический макет, который вы будете добавлять к вашему PopupWindow. Я только что решил аналогичную проблему размещения ListView внутри PopupWindow. Хитрость заключается в том, чтобы переопределить onMeasure() в вашем View. Измеряйте, что ViewFlipper каждый раз, когда он меняется.

@Override
public void onMeasure(int x, int y)
{
    super.onMeasure(x, y);

    if(x == View.MeasureSpec.UNSPECIFIED && y == View.MeasureSpec.UNSPECIFIED)
    {
        //measure your child views here

        //tell the view it has been measured
        this.setMeasuredDimension(width, height);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...