5

Il Android Developer documentation descrive come impostare un tema Dialog per Activity:Come visualizzare un'attività ActionBarCompat come una finestra di dialogo che imposta il tema in AndroidManifest.xml?

Suggerimento: Se si desidera una finestra di dialogo personalizzata, si può invece visualizzare un Activity come una finestra invece di utilizzare i Dialog API. Basta creare un'attività e impostare il suo tema per Theme.Holo.Dialog nell'elemento <activity> manifesta:

<activity android:theme="@android:style/Theme.Holo.Dialog" >

Questo è tutto. L'attività ora viene visualizzata in una finestra di dialogo anziché a schermo intero.

Sto provando a farlo per un'applicazione che utilizza ActionBarCompat. Ho cercato temi diversi come ad esempio ...

android:theme="@android:style/Theme.Dialog" 
android:theme="@style/Theme.AppCompat.Base.CompactMenu.Dialog" 
android:theme="@style/Theme.AppCompat.CompactMenu.Dialog" 

Tuttavia nessuno di loro sembra funzionare poiché io alla fine con lo stesso messaggio di errore:

java.lang.IllegalStateException: È necessario utilizzare un tema Theme.AppCompat (o discendente) con questa attività.

risposta

8

basta premere lo stesso problema, l'altro giorno la conversione da ActionBarSherlock 4.2.0 (che ha un tema speciale finestra rimossa nelle versioni successive, perche 'non ha molto a che fare con ActionBar davvero ...).

ho ispirato da esso, però e si avvicinò con un tema per le API più anziani:

res\values\styles.xml 
<style name="AppTheme.Dialog" parent="android:Theme.Light"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFrame">@null</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowBackground">@drawable/dialog_full_holo_light</item> 
    <item name="android:maxWidth">600dp</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
</style> 

mentre si utilizza il vero tema di dialogo Holo per le API successive:

res\values-v11\styles.xml 
<style name="AppTheme.Dialog" parent="android:Theme.Holo.Light.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowCloseOnTouchOutside">true</item> 
</style> 

Alla fine ho dovuto usare un attività semplice per evitare l'eccezione che hai ottenuto, oltre a un altro in cui ActionBarView controlla che sia larghezza/altezza.

È possibile leggere il mio post sul blog, con un link al codice sorgente completo alla fine: http://dandar3.blogspot.com/2013/12/actionbarcompat-dialog-activity.html

+0

@ drawable/dialog_full_holo_light non è disponibile per SDK minore di 11. Dovremmo aggiungere al progetto (in cui per trovarlo poi?) o rimuoverlo dall'XML? – Giorgio

+1

@Giorgio, vedi le risorse alla fine del mio blogpost, ha un progetto di codice sorgente completo in Google Code e link a risorse Android - sì, è necessario aggiungerli al tuo progetto, ed ecco il link - https: //github.com/android/platform_frameworks_base/tree/master/core/res/res –

Problemi correlati