2009-12-29 19 views
19

Chcę zrobić niestandardowe Dialog. Ponieważ nie podoba mi się jego styl, chcę mieć zaokrąglony prostokąt, a nie ostre rogi. Wiem jak zaimplementować je tematycznie w AndroidManifest.xml, na przykład, używam:Dostosowywanie okna dialogowego poprzez rozszerzenie okna dialogowego lub AlertDialog

android:theme="@style/Theme.CustomDialog" 

I Theme.CustomDialog.xml:

<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog"> 
     <item name="android:windowBackground">@drawable/filled_box</item> 
     <item name="android:windowNoTitle">true</item> 

filled_box.xml 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/> 
    <stroke android:width="3dp" color="#ffff8080"/> 
    <corners android:radius="30dp" /> 
    <padding android:left="10dp" android:top="10dp" 
     android:right="10dp" android:bottom="10dp" /> 
</shape> 

Jak mogę wdrożyć podobny wynik rozszerzając Dialog lub AlertDialog?

Odpowiedz

41

W konstruktorze klasy, która rozszerza wywołanie dialogowe super(context, R.style.CustomDialog); Zrobiłem to wiele razy, aby utworzyć niestandardowe okna dialogowe z określonymi tematami.

Jednak jeśli tematem jest jedyną rzeczą w oknie dialogowym, które chcesz zmienić, można spróbować po prostu instancji instancji Dialog klasy i przekazać go identyfikator tematu jak Dialog dialog = new Dialog(context, R.style.CustomDialog);

Przykładem Dialog rozciągającej:

public class MyDialog extends Dialog 
{ 
    public MyDialog(final Context context) 
    { 
     // Set your theme here 
     super(context, R.style.MyDialogTheme); 

     // This is the layout XML file that describes your Dialog layout 
     this.setContentView(R.layout.myDialogLayout); 
    } 
} 

Reszta kodu, który dodasz do tej klasy, będzie dokładnie taka, jak w klasach aktywności.

+0

tak, dziękuję za pomoc .i Dialogu dialogowego = nowy Dialog (kontekst, R.style.CustomDialog), praca bardzo dobrze. ale nie mogę pisać rozszerza okno dialogowe, czy możesz dać mi kilka fragmentów kodu – pengwang

+0

Dodałem przykład rozszerzania okna dialogowego. –

+0

czy można ustawić przyciski dodatnie i ujemne, tak jak w Dialog? i: e .setPositiveButton ("OK", nowy DialogInterface.OnClickListener() { publiczny dialog onClick (DialogInterface void, int whichButton) {// Pozytywna przycisk kliknięciu getActivityInstance() onOkClicked (GeneralDialogFragment.this). } } –

Powiązane problemy