2017-10-14 4 views
1

Ich versuche, einen Rahmen für ein Dialogfenster in Android hinzuzufügen. Abgerundete Ecken in das Dialogfenster hinzugefügt, um eine ziehbar mit den folgenden Zeilen mitHinzufügen von Rahmen zum Dialogfeld in Android

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:left="5dp" 
     android:right="5dp" 
     android:bottom="5dp" 
     android:top="5dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#ffbf80" /> 
     <corners android:radius="30dp" /> 
     <padding 
     android:left="1dp" 
     android:top="1dp" 
     android:right="1dp" 
     android:bottom="1dp" /> 
    </shape> 
    </item> 
</layer-list> 

Um Grenze zum Dialogfeld hinzuzufügen, habe ich versucht, durch den Hub Element hinzugefügt wird, wie unten

<shape android:shape="rectangle"> 
    <solid 
    android:color="#ffbf80" /> 
    <stroke android:color="#ff3300" android:width="2dp"/> 
    <corners 
    android:radius="30dp" /> 
    <padding 
    android:left="1dp" 
    android:top="1dp" 
    android:right="1dp" 
    android:bottom="1dp" /> 
</shape> 

Aber dies ist die Schaffung ein Rahmen um jedes Element im Dialog wie Textansicht, Symbol, Schaltfläche auch. Ich möchte nur eine Umrandung für das Fenster.

Ich habe den Alarm-Dialog im Java-Code mit AlertDialog.Builder erstellt,

myDialogBuilder=new AlertDialog.Builder(new 
ContextThemeWrapper(getActivity(), 
R.style.CustomDialog)) 
.setTitle(title.getText().toString()) 
.setMessage(myText) 
.setPositiveButton("Done", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) 
       { 
       getDialog().dismiss(); 
       } 
       }); 

myDialog=myDialogBuilder.create(); 

myDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
       @Override 
       public void onShow(DialogInterface dialog) { 
        Window view=((AlertDialog)dialog).getWindow(); 
        view.setBackgroundDrawable(new 
        ColorDrawable(Color.TRANSPARENT)); 
       ... 
       } 
}); 

Ich habe folgend in meinem styles.xml für das Dialogfeld

<style name="CustomDialog" parent="@style/ThemeOverlay.AppCompat.Dialog"> 
    <item name="android:backgroundDimEnabled">true</item> 
    <item name="android:background">@drawable/dialog_bg</item> 
    <item name="android:textColorPrimary">@color/my_textcolor</item> 
</style> 

Bitte helfen Sie mir zu verstehen, Welche Änderungen sollte ich vornehmen, damit der Alarmdialogrand angezeigt wird?

Dank

Antwort

1

Ich konnte das Grenzproblem für meinen Warnungsdialog lösen, indem ich die folgenden Änderungen im Code vornahm.

Anstatt das Thema angeben, wenn Sie den Dialog zu schaffen, fügte ich die ziehbar Ressource in das Dialogfenster in dialog.setOnShowListener()

Window view=((AlertDialog)dialog).getWindow(); 
view.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
// to get rounded corners and border for dialog window 
view.setBackgroundDrawableResource(R.drawable.dialog_bg); 

Ich brauche nur einen Titel, Nachricht und eine Taste in meinem Alarm-Dialog . Daher verwende ich die standardmäßige AlertDialog.Builder-Methode, um sie zu erstellen. Sie kann jedoch auch mit einer benutzerdefinierten Layoutdatei erstellt und die Ansicht festgelegt werden.

0

I Ecke Dialoge in meiner app gerundet, aber ich verwenden, um benutzerdefinierte Dialoge mit benutzerdefinierten Layout und nicht die Standard-Alertdialog, es Arbeit viel mehr natürlich brauchen.

  • Definieren Sie Ihre MyDialogStyle in styles.xml mit:
    <item name="android:background">@drawable/my_rounded_background</item>

  • Im Stammelement des Dialog Layout xml fügen Sie das Attribut:
    style="@style/MyDialogStyle"

  • In Ihrem Dialog Klasse onCreate hinzufügen:

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

+0

Vielen Dank für Ihre Antwort. Ich habe bereits die drei Dinge hinzugefügt, die Sie erwähnt haben, aber der einzige Unterschied besteht darin, dass ich den Alarmdialog im Code erstelle, anstatt ein benutzerdefiniertes Layout zu verwenden. Funktioniert es deshalb nicht? – Sri

+0

Wenn Sie immer noch "myDialogBuilder = new AlertDialog.Builder (..)" verwenden, erstellen Sie kein benutzerdefiniertes Dialogfeld und die Klasse, die Sie für das benutzerdefinierte Dialogfeld erstellt haben, tut nichts, weil Sie es nicht verwenden. Ändern Sie es in "myDialog = new MyCustomDialog()" oder wie auch immer Sie Ihre benutzerdefinierte Dialogklasse aufgerufen haben. Um ein benutzerdefiniertes Dialogfeld zu erstellen, müssen Sie eine Java-Klasse erstellen, die die Dialog Android-Klasse erweitert. –

+0

Ich denke, für API 11 und höher können wir Alarmdialog mit benutzerdefinierten Stil mit AlertDialog.Builder erstellen. Bitte überprüfen Sie diesen Link https: // stackoverflow.com/fragen/14770400/android-alertdialog-styling. Ich konnte Hintergrundfarbe und abgerundete Ecken für den Alarmdialog festlegen, aber es ist der Strich allein, der nicht funktioniert. Wenn ich einen Strich in der Form in einer Zeichnungsdatei hinzufüge, wird ein gerundeter Rahmen für den Titel, die Schaltfläche, die Nachricht und alles, was im Warnungsdialog vorhanden ist, angezeigt. Ich brauche nur einen Umrissrahmen für das Warndialogfeld. – Sri

Verwandte Themen