Ändern Sie die Textfarbe des Warndialogs

Lesezeit: 3 Minuten

Benutzer-Avatar
gaurav tiwari

Ich habe ein Popup zum Herunterladen der Audioanweisung in meiner App. Was ich versuche, ist, die Standardtextfarbe von “OK” in Blau zu ändern. Ich habe etwas versucht, aber es funktioniert nicht. Hier ist mein Code:

 private void showDownloadPgmPopup() {

    android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(getActivity());
    builder.setTitle("Download instructional audio?");
    builder.setMessage(ParamConstants.AUDIODOWNLOADPERMISSION);
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            WwDatabaseHelper.storeSelectedWeekAndDay(getActivity(), mSelectedWeekDataModel);
            goToMoveScreen();
        }
    });
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            AndroidDownloadFileByProgressBarActivity.StartAudioAssetDownload(getActivity());

        }

    }).create();
    // change the text color of download instruction ok button


    final android.app.AlertDialog dialog = builder.show();
    dialog.setOnShowListener( new DialogInterface.OnShowListener() {
                                  @Override
                                  public void onShow(DialogInterface arg0) {
                                      dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.parseColor("#ff5722"));
                                  }
                              });
    dialog.setCanceledOnTouchOutside(false);
    dialog.show();
}

Aber die Änderung wird nicht wirksam, kann mir jemand sagen, was ich falsch mache?

  • Mögliches Duplikat von So erstellen Sie ein benutzerdefiniertes Dialogfeld in Android?

    – SaravInfern

    27. Juli 2016 um 9:48 Uhr

Sie müssen im AlertDialog-Konstruktor eine benutzerdefinierte Stil-ID angeben:

AlertDialog.Builder(Context context, int themeResId)

und die Stildatei sollte ungefähr so ​​​​aussehen:

<style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:colorAccent">#0000FF</item>
</style>

  • Ein weiterer Vorschlag wäre Thema mit <item name="alertDialogTheme">@style/MyStyle</item> wo MyStyle sollte so etwas sein <style name="MyStyle" parent="ThemeOverlay.AppCompat.Dialog.Alert"> </style> (Warnung android:alertDialogTheme wird automatisch vervollständigt, funktioniert aber nicht!)

    – Top-Master

    28. Oktober 2020 um 5:43 Uhr


Benutzer-Avatar
Sushant Somani

Ändern Sie Ihre Methode zu

private void showDownloadPgmPopup() {

    android.app.AlertDialog.Builder builder = new android.app
               .AlertDialog.Builder(getActivity(),R.style.AlertDialog);
...
..
.   
}

Fügen Sie unter res/values/styles.xml einen neuen AlertDialog-Stil hinzu

<style name="AlertDialog" parent="Base.Theme.AppCompat.Light.Dialog">
        <item name="android:textColor">#000000</item>
        <item name="android:textColorPrimary">#595959</item>
        <item name="android:colorAccent">#1b5e20</item>
    </style>

Unten ist der Screenshot dieser Änderungen

Siehe Farbänderungen in Dialogfeldern

Benutzer-Avatar
Vahab Ghadiri

Versuchen Sie, die anzurufen setTextColor nach show. Siehe unten:

show()
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.YELLOW)

  • Groß!!! Vielen Dank. Hat für mich funktioniert. Da ich das Thema Material Design verwendete, funktionierte keine der anderen Antworten.

    – Geschwister

    6. März 2019 um 16:47 Uhr

Benutzer-Avatar
Pramod Waghmare

Dazu haben Sie zwei Möglichkeiten

  1. Standarddialog überschreiben.
//1. create a dialog object 'dialog'
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Exit", errorMessage); 
AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    ...
                }

            }).create();
//2. now setup to change color of the button
dialog.setOnShowListener( new OnShowListener() {
    @Override
    public void onShow(DialogInterface arg0) {
        dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.parseColor("#f34235"));
    }
}

dialog.show()
  1. Erstelle dein eigenes custom Dialog
// create instance of dialog
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

// get inflater and inflate layour for dialogue 
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.alert_label_editor, null);

// now set layout to dialog
dialogBuilder.setView(dialogView);

// create instance like this OR directly mentioned in layout
Button button= (Button) dialogView.findViewById(R.id.label_field);
button.setText("test label");
AlertDialog alertDialog = dialogBuilder.create();

// show dialog
alertDialog.show();

Ich konnte es schaffen, die Textfarbe mithilfe von in Rot zu ändern SpannableString anstelle der normalen Saite.

Beispiel –

var okString = new SpannableString("OK");
okString.SetSpan(new ForegroundColorSpan(Color.Red), 0, Strings.Report.Length, 0);

Ich habe dann die Variable übergeben okString zu setItems().

Versuchen Sie, spannableString an setPositiveButton() zu übergeben.

Benutzer-Avatar
Spriha

dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.YELLOW)

Der obige Code hat bei mir nicht funktioniert, aber der folgende hat funktioniert:

dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(getResources().getColor(R.color.Yellow));

Benutzer-Avatar
Sarith Nob

Einfach, Sie ändern einfach Ihren “OK” -Text mit diesem Code:

Html.fromHtml("<font color="#0000FF">OK</font>")

Dieser Code ändert Ihre Textfarbe vollständig, abhängig von Ihrem hinzugefügten Farbwert, während #0000FF blau ist.

  • Die Farbe wurde in meinem Fall einfach ignoriert. Nicht sicher warum.

    – Brian Reinhold

    17. Juni 2019 um 10:42 Uhr

  • Ich hatte das gleiche Problem, also musste ich das verwenden setSpan Methode aus SpannableString.

    – Fred

    8. Dezember 2020 um 19:52 Uhr

1123390cookie-checkÄndern Sie die Textfarbe des Warndialogs

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy