<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_layout"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/header"
style="@style/textattributes"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="@string/nxt_lvl_header" />
<RelativeLayout
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
style="@style/textattributes"
android:id="@+id/scoreText"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/scoreTxt" />
<TextView
style="@style/textattributes"
android:id="@+id/scoreVal"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="0"
android:layout_toRightOf="@id/scoreText"
android:layout_marginLeft="3dp"/>
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:gravity="bottom|center"
android:orientation="vertical" >
<Button
android:id="@+id/nxt_lvl_dismis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dismiss" />
</LinearLayout>
</LinearLayout>
Trzeba pamiętać o nadaniu identyfikatora układu - android:id="@+id/popup_layout". Będzie on potrzebny przy tworzeniu okna:
View popup = infl.inflate(R.layout.next_level,
(ViewGroup)findViewById(R.id.popup_layout));
pw = new PopupWindow(popup, 300, 470, true);
Teraz bardzo ważna sprawa. Jeżeli nasz popup ma reagować na zdarzenia - kliknięcie przycisku na przykład, to musi mieć tło. Ja chciałem, żeby było prześwitujące:
Bitmap tlo = Bitmap.createBitmap(300, 470, Bitmap.Config.ARGB_8888);
Canvas canvTemp = new Canvas(tlo);
canvTemp.drawColor(Color.parseColor("#D8591385"));
BitmapDrawable drw = new BitmapDrawable(tlo);
pw.setBackgroundDrawable(drw);
Potem dodam ładne zaokrąglone narożniki. Tło ustawione, teraz można dodać zdarzenia do przycisków i ustawić wartości:
TextView txtScore = (TextView)popup.findViewById(R.id.scoreVal);
txtScore.setText(""+score);
dismissButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
pw.dismiss();
}
});
Teraz gdy wszystko gotowe, wyświetlamy okienko:
pw.showAtLocation(popup, Gravity.CENTER, 0, 0);
Co dziwne, w dokumentacji piszą, że metoda dismiss() działa tylko dla okienek uruchomionych za pomocą metody showAsDropdown(), a w pozostałych przypadkach nic nie robi. Jednak okienko się zamyka. Wrócę do tego problemu później. Właściwie to nawet nie jest problem :)