2010-05-05 19 views
14

Sto cercando di ottenere una finestra di dialogo o una finestra popup completamente personalizzata, senza i controlli predefiniti dell'interfaccia utente di Android (titolo, sfondo, pulsanti e così via).Popup personalizzata Android/Finestra di dialogo

È possibile? Ho passato ore a cercare questo, ma senza fortuna ... Sembra che questo dovrebbe essere facilmente possibile, ma non riesco a trovarlo.

Preferibilmente questo sarebbe gonfiando una vista da XML, ma a questo punto tutto ciò che avrebbe funzionato sarebbe bello.

Grazie.

+1

Questo potrebbe aiutare http://stackoverflow.com/a/2700683/1118886 –

risposta

28

passaggi che ho svolto:

  1. Creare una classe che estende Dialog.
  2. Nel onCreate, chiamare setContentView(x, y) con x come R.layout e come R.style.popupStyle (vedere di seguito).
  3. In res/values ​​/ style.xml, è necessario sovrascrivere lo stile DialogWindow predefinito. Ho provato a creare uno stile che ha questo come genitore, ma non ha ancora cancellato tutte le impostazioni predefinite. Così ho controllato l'albero git di Android e ho ottenuto lo stile di default, e ho solo copiato e incollato. Questo è l'unico:
<style name="Theme.Dialog"> 
    <item name="android:windowFrame">@null</item> 
    <item name="android:windowTitleStyle">@android:style/DialogWindowTitle</item> 
    <item name="android:windowBackground">@android:drawable/panel_background</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
</style>

Otterrete alcuni errori, basta risolvere copiando più roba dalla styles.xml Android ufficiale e themes.xml file. Ecco il contenuto del mio file styles.xml: http://pastebin.com/RRR15YYS

Questo ti dà solo un popup bianco, senza bordi, niente. Inizia a personalizzare. :)

Grazie a mbaird per avermi messo sulla strada giusta.

[modifica] avevo bisogno di guardare in alto la mia risposta ancora una volta, e ho trascorso almeno dieci minuti a cercare i file Android ufficiali stili/temi, ecco che sono, per riferimento futuro: styles.xml e themes.xml.

+0

Per riferimento, ho provato questo approccio ma ho trovato i passaggi un po 'confusi (anche se estremamente utili). Ho ottenuto un risultato simile senza dover creare una classe che estenda la classe Dialog. Il mio metodo è qui: http://stackoverflow.com/questions/3728990/how-to-create-a-completely-custom-dialogue-popup-in-android-change-overlay-colou/3736057#3736057 – justinl

+0

Per evitare la compilazione error