2012-03-21 5 views
52

Sto creando una finestra di dialogo sul tema Holo e desidero seguire il modo predefinito di visualizzazione dei pulsanti del sistema operativo. Finora ho creato la finestra di dialogo ma i pulsanti non vengono visualizzati come nelle app eseguite in Holo per ICS. Come posso fare questo? mio destinato aspetto & sensazione è No. 3rd in this image e sono in grado di raggiungere fino a qui Notice the Signup and Login buttonsCome pulsanti della finestra di dialogo stile Holo per Android

risposta

85

un po 'in ritardo, ma forse qualcuno è ancora interessato a questo.

questo funziona abbastanza bene per me.

... 
<!-- 
EDIT: be carefull, "?android:attr/dividerHorizontal" is only supported since API 11 
     just avoid it in prior OSs. 
--> 
<View 
    android:layout_width="fill_parent" 
    android:layout_height="1dip" 
    android:background="?android:attr/dividerHorizontal" /> 
<LinearLayout 
    style="?android:attr/buttonBarStyle" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:paddingTop="0dip" 
    android:paddingLeft="2dip" 
    android:paddingRight="2dip" 
    android:measureWithLargestChild="true"> 

    <Button 
     android:id="@+id/cancel" 
     style="?android:attr/buttonBarButtonStyle" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@android:string/cancel"/> 
    <Button 
     android:id="@+id/ok" 
     style="?android:attr/buttonBarButtonStyle" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@android:string/ok"/> 
</LinearLayout> 
... 

l'attività che carica questo layout ha bisogno il tema Holo.Dialog.

android:theme="@android:style/Theme.Holo.Dialog" 
+1

Piccola correzione: probabilmente dovresti usare dividerHorizontal nella primissima vista del tuo esempio. – dimsuz

+1

state attenti, divisoreHorizontal non è supportato prima dell'API 11. –

+0

@dimsuz Perché il 'dividerHorizontal'? – KevinOrr

2

È possibile impostare il tema attraverso l'XML manifest di Android o all'interno onCreate della attività con setTheme(android.R.style.Theme_Holo);

Le dimensioni pulsanti non è legato al tema stesso. La dimensione dipende dalle tue definizioni xml. Nell'immagine hai inviato, sembra che i pulsanti hanno ricevuto il tema Holo quindi non c'è niente di sbagliato qui ...

Ecco un layout XML che allungherà i pulsanti per riempire l'intera larghezza di dialogo:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     > 
    <LinearLayout 
       android:orientation="horizontal" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="5dip" 
       > 
       <Button 
        android:id="@+id/okButton" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="OK" 
       /> 
       <Button 
        android:id="@+id/cancelButton" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="Cancel" 
       />   
     </LinearLayout> 
</LinearLayout> 
+0

Mi dispiace ma questo non funziona. Concordo sulla larghezza, ma non riesco a ottenere l'aspetto piatto del pulsante nella finestra di dialogo – kishu27

+0

@ kishu27 Quindi l'XML che ho scritto qui ha fissato la larghezza dei pulsanti ma i pulsanti non hanno ancora il layout piatto del tema Holo? –

+0

purtroppo nemmeno la larghezza :) Mi dispiace .. Ho scoperto lo stile del pulsante piatto e pubblicherò la risposta non appena avrò risolto il problema della larghezza. Stranamente, il tuo codice dovrebbe funzionare ma non funziona e non riesco a pensare ad altro per la larghezza – kishu27

22

Questo è ciò che funziona:

<LinearLayout 
    android:id="@+id/buttonHolder" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    > 

    <Button 
     android:id="@+id/cmdSignup" 
     style="@android:style/Widget.Holo.Light.Button.Borderless.Small" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/Signup" /> 

    <Button 
     android:id="@+id/cmdLogin" 
     style="@android:style/Widget.Holo.Light.Button.Borderless.Small" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/Login" /> 
</LinearLayout> 

la proprietà style="@android:style/Widget.Holo.Light.Button.Borderless.Small" dà l'aspetto piatto e sentire, e la distribuzione del peso del 50% a causa della combinazione di 100 $ dimensionamento delle LinearLayout da android:layout_width="match_parent" and android: layout_weight = "1" `per i pulsanti

+0

Grazie per la risposta! Ti chiedi come o se sei riuscito a ottenere il bordo grigio chiaro attorno ai pulsanti come mostrato nel tuo primo screenshot? Grazie – Dittimon

+0

Non ho capito con questo markup da solo. Ero di fretta ... molto brutta fretta per completare il progetto e non mi interessava capire perché non l'avevo capito e non l'ho corretto. In poche settimane, hanno chiesto di spostarlo da ICS a GB e ho dovuto creare manualmente tutto questo così sprecato e dimenticato da tempo :) – kishu27

+0

ma sì, se dovessi farlo di nuovo, andrei a scaricare uno dei gli esempi dal sito Android Dev e check it out – kishu27