Ich habe eine Android-App, die einige benutzerdefinierte Dialoge verwendet, die von XML-Layouts aufgeblasen werden. Der Inhalt der Ansicht des Dialogfelds stammt aus dem XML-Layout, aber die eigentlichen positiven und negativen Schaltflächen werden durch Aufrufen der setPositiveButton- und setNegativeButton-Methoden des Builders hinzugefügt, sodass ich das Styling nicht steuern kann (oder zumindest nicht beherrschen kann) der Knöpfe selbst.So legen Sie die Schriftgröße für Text von Dialogfeldern fest
Siehe die onCreateDialog-Methode unten aus meiner LoginConfirmationDialog.java-Datei, die DialogFragment erweitert. Es erscheint im Grunde ein sehr einfacher Dialog, der nach der Bestätigung fragt, wer sich anmeldet (d. H. "Bist du Joe Schmoe?", Mit den Schaltflächen Ja und Nein).
Das XML-Layout hat in diesem Fall nur einen TextView, und um das zu vereinfachen (weil die Benutzer Bauarbeiter mit großen knorrigen schmutzigen Fingern sind, die großen Text und große Schaltflächen benötigen), habe ich die Schriftart für das TextView erstellt ziemlich groß. Die beiden Schaltflächen haben jedoch eine viel kleinere Schriftart für ihren Text, und da sie nicht Teil meines Layouts sind und mit den Methoden setPositiveButton und setNegativeButton hinzugefügt werden, wie kann ich die Schriftgröße steuern?
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle args = this.getArguments();
String empName = args.getString("empName");
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_login_confirmation, null);
TextView message = (TextView)view.findViewById(R.id.txtLoginConfirmationMessage);
message.setText("Are you " + empName + "?");
builder.setView(view);
builder.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mListener.onEmpConfirmPositiveClick(LoginConfirmationDialog.this);
}
});
builder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mListener.onEmpConfirmNegativeClick(LoginConfirmationDialog.this);
}
});
// Create the AlertDialog object and return it
return builder.create();
}
zu erhalten, da Sie bereits eine XML-Datei für den Dialog mit, warum nicht nur die beiden Tasten im Layout enthalten und stellen Sie die 'onClick' Handler in der Dialogerstellung? – jnthnjns
Ich denke, das ist ein guter Punkt. Ich mag es, die Standardschaltflächen für das Look and Feel zu verwenden, das man mit ihnen bekommt, aber ich denke, ich könnte die Buttons direkt zum Layout hinzufügen und die Listener darauf einstellen. – Jim
alternativer Ansatz ist in dieser Frage zur Verfügung gestellt [http://stackoverflow.com/questions/8881710/how-to-reduce-alertdialog-builder-title-font-size-and-positive-button-size] [ 1] [1]: http://stackoverflow.com/questions/8881710/how-to-reduce-alertdialog-builder-title-font-size-and-positive-button-size –