2016-12-10 3 views
-1

Ich weiß, das ist sehr schlecht. Von ein paar Stunden versuche ich, die theme für AlertDialog zu ändern, aber nicht zu tun.Kann Dialogfeldhintergrund nicht ändern?

Mutter Thema:

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="android:background">@color/primary_background</item> 
    <item name="android:colorPrimaryDark">@color/primary_background</item> 
    <item name="android:navigationBarColor">@color/primary_background</item> 
    <item name="android:popupBackground">@color/primary_background</item> 
    <item name="android:alertDialogTheme">@style/myDialog</item> 
</style> 

Dialog Thema:

<style name="myDialog" parent="Theme.AppCompat.Dialog"> 
    <item name="dialogPreferredPadding">@dimen/dialog_padding</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowBackground">@color/white</item> 
</style> 

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(context, R.style.myDialog)); 

Ich bin, um herauszufinden, nicht in der Lage, was schief läuft. Ich denke, das ist sehr einfach.

Antwort

0

Anstatt es zu tun xml Style können Sie es einfach programmatisch unter Weg erreichen.

Erstellen Sie Ihre XML-Datei, die Sie im AlertDialog anzeigen müssen.

Beispiel: Name ist abc_dialog.xml.

Jetzt tun diese Weise

LayoutInflater inflater = getLayoutInflater(); 
View dialoglayout = inflater.inflate(R.layout.abc_dialog, (ViewGroup) getCurrentFocus()); 

und festgelegt, dass im Hinblick auf Ihre AlertDialog.

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(dialoglayout); 
builder.show(); 
+0

bekommen Was passiert, wenn ich die Hintergrundfarbe ändern müssen, Textfarbe.? –

+0

@AnkurKhandelwal Ändern Sie die Hintergrundfarbe, wie ich vorschlagen, können Sie leicht ändern die Hintergrundfarbe in der Datei, die Sie 'abc_dialog.xml' erstellt, wie ich in der Antwort vorgeschlagen. – Ironman

+0

Auf diese Weise muss ich die Hintergrundfarbe für jedes Dialogfeld ändern. –

0

I. Deklarieren Sie benutzerdefinierbare dropable background_dialog.xml für Dialoghintergrund.

<?xml version="1.0" encoding="utf-8"?> 
<!-- From: support/v7/appcompat/res/drawable/abc_dialog_material_background_light.xml --> 
<inset xmlns:android="http://schemas.android.com/apk/res/android" 
    android:insetLeft="16dp" 
    android:insetTop="16dp" 
    android:insetRight="16dp" 
    android:insetBottom="16dp"> 

    <shape android:shape="rectangle"> 
     <corners android:radius="2dp" /> 
     <solid android:color="@color/indigo" /> 
    </shape> 

</inset> 

II. Deklarieren Sie benutzerdefinierte Stile in Ihrer Datei styles.xml.

<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <!--buttons color--> 
    <item name="colorAccent">@color/pink</item> 
    <!--title and message color--> 
    <item name="android:textColorPrimary">@android:color/white</item> 
    <!--dialog background--> 
    <item name="android:windowBackground">@drawable/background_dialog</item> 
</style> 

III. Erstellen Sie Ihren Dialog und verwenden Sie den Stil als Parameter in AlertDialog.Builder.

AlertDialog.Builder builder = 
     new AlertDialog.Builder(this, R.style.MyDialogTheme); 
... 
AlertDialog dialog = builder.create(); 
// display dialog 
dialog.show(); 

Bezahlen Sie diese document für weitere Details.

ODER

Sie benutzerdefinierte Ansicht des Dialogs programmatisch wie unten Art und Weise einstellen.

LayoutInflater inflater = getLayoutInflater(); 
View dialoglayout = inflater.inflate(R.layout.dialog_layout, (ViewGroup) getCurrentFocus()); 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(dialoglayout); 
builder.show(); 

dann nach, können Sie anhand der Komponente wie unten

Button btn = (Button) dialoglayout.findViewById(R.id.button_id); 
+0

das ändert nur die untere Zeile wo ok und abbrechen geschrieben. –

+0

Warum funktioniert die Theme-Lösung nicht? –

+0

Versuchen Sie mit der Einstellung 'colorBackground' -Eigenschaft im Stil wie folgt' ​​@ Farbe/weiß ' ' –