Dialogfeld: Schaltflächen mit dem langen text nicht umbrechen / ausgepresst - material Design in android 5.0 lollipop
Während der Optimierung eine app für ' material-theme auf lollipop, ich bin der Begegnung mit diesem lästigen problem:
Immer, wenn es einen langen text auf Schaltflächen, das passt nicht, die button-bar breit, der text nicht umgebrochen in mehreren Zeilen, die für diese Tasten wie in den vorherigen Themen. Stattdessen die folgenden Schaltflächen bekommen, drückte den dialog, nicht erreichbar (siehe Bild unten).
Screenshot:
Habe ich viel Zeit damit verbracht, über dieses problem so weit und die einzige Thema, dass ich finden konnte im internet, ist dies:
https://code.google.com/p/android/issues/detail?id=78302
Also nehme ich die Ratschläge und bitten, diese Frage hier..
Was ich versucht habe ist der Blick in die Quelle (Tasten definiert werden mit maxLines = 2) und ändern der verschiedenen Parameter auf buttonBarStyle und buttonBarButtonStyle, aber ohne Erfolg.
Ich bin auf der Suche für eine einfache Stil-Lösung und nicht möchten, dass die Verwendung von third-party-Bibliotheken, weil dieser.
Kann dies nur ein emulator-problem? Ich denke nicht so.
Hilfe wird sehr geschätzt. Vielen Dank im Voraus.
Edit:
Follow-up, siehe meine eigene Antwort aus Dec 3, das ist keine Lösung.
- Haben Sie versucht, Sie anzurufen, setSingleLine(false) direkt auf die Schaltfläche Objekt?
- Danke, aber wie kann ich das button-Objekt von einem AlertDialog?
- OK, ich habe versucht, Ihren Vorschlag, aber keine änderung. Auch, wenn ich eine Feste Breite / Gewicht 'buttonBarButtonStyle' es macht tatsächlich produzieren mehrere Zeilen, aber das ist offensichtlich nicht die Lösung..
- Kannst du posten, wie du versucht hast, die Einstellung buttonBarStyle in Ihrem Thema?
- siehe meine eigene Antwort..
- Es gibt auch einen anderen Weg: nicht nutzen AlertDialog defaults, sondern erstellen Sie ein benutzerdefiniertes Dialogfeld layout von Grund auf neu. Dass würde Ihnen mehr Flexibilität bei der Gestaltung der Schaltflächen. Sie können auch "Gestapelt voller Breite der Schaltflächen" um zu vermeiden, shirtening die button-Texte wie in google.com/design/spec/components/dialogs.html#dialogs-specs.
- Ich war gefangen von dieser in der Produktion :S vielen Dank für dieses posting.
- In der Ausgabe, die Sie verbunden, die Sie erwähnt war es wie vorgesehen funktioniert. Offensichtlich haben Sie da Ihre Meinung geändert und ein Update sollte hoffentlich bald kommt: code.google.com/p/android/issues/detail?id=182741. In der Zwischenzeit ging ich mit der Behelfslösung, die ich hier veröffentlicht: stackoverflow.com/a/32001524/1317564
- Vielen Dank für das update. Ich bin froh, dies wurde bestätigt, als ein bug und wird behoben werden in Zukunft. Deine Lösung unten sieht sehr interessant! Für mich ist es eigentlich ausreichend sei, neu zu schreiben, einige button-Texte (auch in Deutsch :-)) und/oder eine Umstrukturierung der dialog-Funktionalitäten. Aber ich verstehe, dass dies möglicherweise nicht genug sein in allen Fällen und Sprachen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies könnte behoben werden mit der Verwendung von gestapelten Schaltflächen anstelle von Zeile Tasten. Hier mein workaround, wie es erreicht werden könnte, mit AppCompat lib :
Code
importieren android.Unterstützung.v7.app.AlertDialog;
Stil
Ergebnis
Folgenden
Da bin ich nicht in der Lage, nach mehr als zwei links aufgrund meiner Anfänger-Ruf, ich habe mit der post eine Antwort auf meine Frage anstatt es zu editieren.
Unten ist, wie ich versucht, den Stil der Schaltflächen mit buttonBarStyle und buttonBarButtonStyle zu erreichen, jede Verbesserung - die Ergebnisse sehen Sie hier:
leider diejenigen sind, die offensichtlich nicht wünschenswert-Lösungen.
Zusammenfassend diesem Thema für alle interessierten:
Android Material Design scheint ein bug mit automatischer button-Breite Spannweite in der alert-Dialoge.
Wenn Sie zum Beispiel 3 buttons, einer davon mit mehr als einem Wort, die positiv-Taste wird wahrscheinlich drückte den dialog nach rechts, anstatt der Schaltfläche mit mehr als einem Wort, eingewickelt in mehrere Linien, so dass alle Knöpfe passen in der button-Leiste wie das basic-theme /holo-theme tun.
Es nicht zu sein scheinen Lösungen, die ausschließlich durch anwenden der änderungen auf buttonBarStyle und/oder buttonBarButtonStyle, da Ihre Stile sind nicht einschränken Taste Wortlaut eingewickelt in mehrere Zeilen standardmäßig.
Sicher, Material, Thema, dialog-buttons, mehr Platz benötigen als in anderen Themen, in der Regel aufgrund der caps, die Tapferkeit und die großzügige Polsterung und hintergrund, aber das ist nicht die Quelle des Problems, es macht es nur scheinen, eher als wenn das styling war weniger Platz erfordern.
Der einzige Weg, um dieses problem zu lösen scheint, indem Sie Ihre Tasten kürzere Titel, wenn Sie nicht wollen, um Stil Weg von Material, das Aussehen und das Gefühl (wie der text der Schaltfläche zu verkleinern und /oder die Einstellung allCaps false).
verwenden Sie folgenden code, lassen Sie die Tasten an der rechten und vertikale Anordnung
Einen schnellen soln, dass ist nicht dynamisch hinzufügen \n brechen die lange Zeichenfolge bis
Hier ist eine Abhilfe, die ich kam mit, mit Hilfe der verlinkten Antwort von Andrey T (https://stackoverflow.com/a/29662638/1317564):
Zuerst erstellen Sie eine utility-Methode, die wickeln Sie die Tasten nur, wenn Sie müssen verpackt sein:
Können Sie zusätzliche Fehlerbehandlung (z.B. try/catches) und passen Sie diese weiterhin als angemessen.
Nun, rufen Sie dieses utility-Methode auf, wenn das Dialogfeld angezeigt wird:
Diesem funktioniert der trick und wird nur wickeln Sie die Tasten, wenn nötig. Ich nutze es überall, sogar zwei-Knopf-Dialoge können, müssen einwickeln in Deutsch und drei-Knopf-Dialogen sicherlich Bedarf es in vielen Sprachen.