Dato che il ragionamento di MrSnowflake è impreciso, mi sto prendendo la libertà di fornire un'altra risposta.
C'è qualcosa di sbagliato con la markup in questione di Steve Haley, e si confonde alertDialogStyle e alertDialogTheme, molto probabilmente a causa del fatto che alertDialogTheme è stato introdotto molto tempo dopo alertDialogStyle era intorno.
Quindi, anche se @android: stile/Theme.Dialog.Alert è disponibile sulla propria piattaforma di Andoid, non è ancora possibile utilizzare il suo potere espressivo agganciando una versione cusomized indietro nel tuo tema a meno che la piattaforma Android supporta una android: alertDialogTheme attributo/elemento per temi. (Può o non può accadere che esistano versioni di questo tipo incoerenti, ma il markup utilizzato nella domanda suggerisce che lo sia.)
Nel markup della domanda, parent = " @android: style/Theme.Dialog.Alert "non farà nulla eccetto creare l'illusione che stai personalizzando il tema della finestra di avviso quando in realtà stai solo personalizzando lo stile della finestra di avviso.
Ecco come dovrebbe apparire il markup; non tutte le versioni di Android supportano tutte le funzionalità.
<style name="myTheme" parent="android:Theme">
<item name="android:buttonStyle">@style/customButtonStyle</item>
<item name="android:alertDialogStyle">@style/dialogAlertStyle</item>
<item name="android:alertDialogTheme">@style/dialogAlertTheme</item>
</style>
<style name="dialogAlertStyle" parent="@android:style/AlertDialog">
<item name="android:fullDark">[...]</item>
[...]
</style>
<style name="dialogAlertTheme" parent="@android:style/Theme.Dialog.Alert">
<item name="android:windowBackground">[...]</item>
[...]
</style>
Personalizzare lo stile di dialogo avviso è stato intorno per un bel po 'di tempo, ma si limita a fornire (background) drawable per "fullDark", "topDark", ecc
Personalizzare il tema di dialogo avviso apre un metodo per fornire attributi come windowBackground, windowTitleStyle e simili, ma come detto prima, è necessaria una versione per Android che supporti l'attributo/elemento alertDialogThem per i temi. Non riesco a capire esattamente quando questo è stato introdotto, ma non è stato Android 2.2 ed Eclipse ti dirà comunque ...
Non ho le risorse per convalidare la conclusione di MrSnowflake che è impossibile stilare una finestra di avviso pulsanti in XML, ma a meno che non ci troviamo di fronte a uno di quegli aspetti un po 'sgradevoli di Android in cui una funzionalità è davvero mancante, la trovo improbabile.
È un dato di fatto, ciò che manca nella questione è la parte più rilevante in questo senso, vale a dire
<style name="customButtonStyle" />
così alla conclusione che i pulsanti di dialogo di avviso non obbediscono il Widget.Button non è ancora provata dal mio punto di vista.
Conclusione consolidata: Le funzionalità per definire finestre di avviso di avviso indipendentemente dagli altri widget sono limitate in Android ma diventano più potenti man mano che le nuove versioni migliorano in questo senso.
Hmm. Sarebbe fastidioso; cambiare i pulsanti di dialogo non dovrebbe essere una cosa insolita da fare, considerando che è facile applicare uno stile di pulsante ai pulsanti di attività "normali". –
Nelle normali attività si definisce il layout della vista del contenuto con un xml. La finestra di dialogo lo fa per te, quindi non hai accesso al layout xml. L'implementazione della propria finestra di dialogo (possibilmente con solo una chiamata setContentView()) consente di utilizzare un diverso xml e quindi diversi stili per i pulsanti. – MrSnowflake
Come classificare AlertDialog in modo da poter utilizzare AlertDialog.Builder con la sottoclasse? –