Ich habe viele Warndialoge in meiner App. Es ist ein Standardlayout, aber ich füge dem Dialogfeld positive und negative Schaltflächen hinzu. So erhalten die Schaltflächen die Standardtextfarbe von Android 5 (grün). Ich habe versucht, es ohne Erfolg zu ändern. Irgendeine Idee, wie man diese Textfarbe ändert?
Mein benutzerdefinierter Dialog:
public class MyCustomDialog extends AlertDialog.Builder {
public MyCustomDialog(Context context,String title,String message) {
super(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false);
TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title);
titleTextView.setText(title);
TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message);
messageTextView.setText(message);
this.setCancelable(false);
this.setView(viewDialog);
} }
Dialog erstellen:
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage);
builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
...
}
}).show();
Dieser negative Button ist eine Standarddialogschaltfläche und übernimmt die grüne Standardfarbe von Android 5 Lollipop.
Danke vielmals
Antworten:
Sie können versuchen, das
AlertDialog
Objekt zuerst zu erstellen und es dann so einzurichten, dass die Farbe der Schaltfläche geändert und dann angezeigt wird. (Beachten Sie, dass wir für einbuilder
Objekt anstelle eines Aufrufsshow()
aufrufencreate()
, um dasAlertDialog
Objekt abzurufen:Der Grund, warum Sie dies tun müssen
onShow()
und diese Schaltfläche nach dem Erstellen Ihres Dialogfelds nicht einfach erhalten können, ist, dass die Schaltfläche noch nicht erstellt wurde.Ich habe mich geändert
AlertDialog.BUTTON_POSITIVE
,AlertDialog.BUTTON_NEGATIVE
um die Änderung in Ihrer Frage widerzuspiegeln. Obwohl es seltsam ist, dass die Schaltfläche "OK" eine negative Schaltfläche ist. Normalerweise ist es der positive Knopf.quelle
Hier ist eine natürliche Möglichkeit, dies mit Stilen zu tun:
Wenn Ihr
AppTheme
geerbt wirdTheme.MaterialComponents
, dann:Wenn Ihr
AppTheme
geerbt wird vonTheme.AppCompat
:Verwenden Sie Ihre
AlertDialogTheme
in IhremAppTheme
oder im Konstruktor
quelle
com.google.android.material:material:1.0.0-beta01
und ich Theme.MaterialComponents.Light.Dialog.AlertDie Farbe der Schaltflächen und anderer Texte kann auch über das Thema geändert werden:
Das Ergebnis:
quelle
android:
Teil vonandroid:alertDialogTheme
und entfernenandroid:colorAccent
.Die einfachste Lösung ist:
quelle
AlertDialog.BUTTON_NEGATIVE
usw. seinEs gibt zwei Möglichkeiten, die Farbe der Dialogschaltfläche zu ändern.
Grundlegender Weg
Wenn Sie nur eine Aktivität ändern möchten, schreiben Sie die folgenden zwei Zeilen danach
alertDialog.show();
Empfohlen
Ich empfehle, ein Thema für
AlertDialog
in hinzuzufügen,styles.xml
damit Sie nicht bei jedem Aktivitäts- / Dialogaufruf immer wieder denselben Code schreiben müssen. Sie können einfach einen Stil erstellen und dieses Thema auf das Dialogfeld anwenden. Wenn Sie also die Farbe des AlertDialog-Felds ändern möchten, ändern Sie einfach die Farbe in styles.xml. Alle Dialogfelder werden in der gesamten Anwendung aktualisiert.Und wende das Thema in an
AlertDialog.Builder
quelle
Wenn Sie die Textfarbe der Schaltflächen ändern möchten (positiv, negativ, neutral), fügen Sie einfach Ihren benutzerdefinierten Dialogstil hinzu:
Ihr Dialogstil muss also folgendermaßen aussehen:
quelle
Die Farbe der Schaltflächen und anderer Texte kann auch mit appcompat geändert werden:
quelle
Fügen Sie im Thema / Stil Ihrer App die folgenden Zeilen hinzu:
Fügen Sie dann die folgenden Stile hinzu:
Mit dieser Methode ist es nicht erforderlich, das Thema im Builder für AlertDialog festzulegen.
quelle
Nur als Randnotiz:
Die Farben der Schaltflächen (und des gesamten Stils) hängen auch vom aktuellen Thema ab, das bei Verwendung unterschiedlich sein kann
oder
(Besser den zweiten verwenden)
quelle
So geht's: Einfach
quelle
Für mich war es anders, ich habe ein Button-Thema verwendet
und weil
war dort weiß ... ich habe keinen Schaltflächentext gesehen (Dialogschaltflächen sind im Grunde auch Schaltflächen). los geht's, geändert, repariert.
quelle