Подтвердить что ты не робот

Есть ли простой пример класса PopupWindow с помощью Android v2.0?

Я посмотрел онлайн и не смог найти рабочий пример класса PopupWindow. Примеры кода, которые я нашел в Интернете, либо скомпилированы, но не работают, либо используют методы, которые были удалены (например, Activity.getViewInflate()).

Есть ли простой рабочий пример, отображающий PopupWindow?

4b9b3361

Ответ 1

Я создал рабочий пример на основе этой записи в Google Groups.

Чтобы создать простой рабочий PopupWindow, вам необходимо сделать следующее:

  • Создайте макет XML, который описывает представление, которое будет отображаться в PopupWindow.
  • Вызвать PopupWindow, раздувая макет XML и назначить соответствующее "родительское представление" всплывающему окну.

popup_example.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="10dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:text="Test Pop-Up"
    />

</LinearLayout>

Код Java:

    LayoutInflater inflater = (LayoutInflater)
       this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    PopupWindow pw = new PopupWindow(
       inflater.inflate(R.layout.popup_example, null, false), 
       100, 
       100, 
       true);
    // The code below assumes that the root container has an id called 'main'
    pw.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0); 

Ответ 2

AFAIK работает только AbsoluteLayout (подтверждение pls), как показано на http://sree.cc/google/android/android-popup-window. Я показал всплывающее окно справа, но LinearLayout не показывал все элементы. Но AbsoluteLayout устарел!

FrameLayout также работает, но организация просмотров - это кошмар, поскольку официальная документация говорит, что это полезно только для одного вида просмотра.

Кроме того, , чтобы иметь возможность принимать события касания, вам нужно сделать следующее: setBackgroundDrawable (новый BitmapDrawable());

как описано ниже в Увольнение всплывающего окна Android

Ответ 3

Вы получаете невидимость, потому что вы не задали цвет фона макета, на которого вы завышены. Установите его как android: background = "# 778899", и, безусловно, вы можете увидеть вещи