Ändern der Ausrichtung der AlertDialog-Schaltflächen

Sie haben stundenlang darum gekämpft, die Ausrichtung der Schaltflächen in AlertDialog (support.v7 one) zu ändern, da sie sich nicht entsprechend der Ansichtsrichtung des Gebietsschemas ausrichten.Trotz der Ausrichtung der gesamten App nach links und des Texts im AlertDialog.

(Warum sollte das passieren, sagst du? Ich konfiguriere die Sprache des Gebietsschemas programmgesteuert auf "en", da dies meine Standardsprache für Apps ist, obwohl das Gebietsschema des Systems möglicherweise etwas anderes ist.)

So wie gesagt, ich muss die Nachricht im Dialogfeld nicht berühren, aber als Beispiel kann man so die Richtung ändern:

TextView messageView = (TextView)dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.RIGHT); // or LEFT

Natürlich funktioniert es nicht mit den Tasten, da ich stattdessen die Schwerkraft des Layouts ändern muss.

So finde ich die Schaltflächen (nachdem ich show () im AlertDialog.Builder aufgerufen habe, sonst sind sie null):

AppCompatButton accept = (AppCompatButton)dialog.findViewById(android.R.id.button1);
AppCompatButton cancel = (AppCompatButton)dialog.findViewById(android.R.id.button2);

Und hier ist, wie ich versuche, ihre Ausrichtung in ihrem übergeordneten LinearLayout zu ändern:

((LinearLayout.LayoutParams)accept.getLayoutParams).gravity = Gravity.RIGHT;
((LinearLayout.LayoutParams)cancel.getLayoutParams).gravity = Gravity.RIGHT;

Ich habe RECHTS gewählt, da die Seite der Schaltflächen im Dialogfeld immer der Seite gegenüberliegt, an der der Text ausgerichtet ist. (Ja - ich habe LEFT auch ausprobiert, nichts hat sich geändert).

Dies funktioniert nicht. Hat jemand eine Idee, wie man das erreicht? Es scheint, dass sie einfach an ihrem Platz festsitzen.

Bearbeiten: Titel ist auch nicht ausgerichtet, ich habe dies nur bestätigt (aus irgendeinem Grund wird es rechts angezeigt, wie meine Systemkonfiguration und nicht wie meine Ländereinstellungskonfiguration).

Antworten auf die Frage(4)

Ihre Antwort auf die Frage