Mam aplikację na Androida, która korzysta z niestandardowych okien dialogowych, które są zawyżone w układach XML. Zawartość widoku okna dialogowego pochodzi z układu XML, ale faktyczne przyciski dodatnie i ujemne są dodawane przez wywołanie metod setPositiveButton i setNegativeButton, więc nie mam kontroli nad (lub przynajmniej nie wiem, jak kontrolować) stylizacji samych przycisków.Jak ustawić rozmiar czcionki dla tekstu przycisków dialogowych?
Zobacz metodę onCreateDialog poniżej z mojego pliku LoginConfirmationDialog.java, który rozszerza DialogFragment. Zasadniczo pojawia się bardzo prosty dialog, który prosi o potwierdzenie, kto się loguje (tj. "Czy jesteś Joe Schmoe?", Z przyciskami Tak i Nie).
Układ XML w tym przypadku ma tylko pojedynczy widok tekstowy, i aby to ułatwić (ponieważ użytkownicy będą pracownikami budowlanymi z dużymi brudnymi palcami, którzy potrzebują dużego tekstu i dużych przycisków), zrobiłem czcionkę dla TextView dość duży. Dwa przyciski mają jednak znacznie mniejszą czcionkę do tekstu, a ponieważ nie są częścią mojego układu i są dodawane za pomocą metod setPositiveButton i setNegativeButton, w jaki sposób mogę kontrolować rozmiar czcionki?
@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();
}
Skoro już używasz pliku xml dla okna dlaczego po prostu nie obejmuje dwóch przycisków w układzie i ustawić 'onClick' procedury obsługi w tworzeniu okna dialogowego? – jnthnjns
Przypuszczam, że to dobra uwaga. W pewnym sensie lubię używać domyślnych przycisków dla wyglądu i stylu, jaki można uzyskać za ich pomocą, ale myślę, że mógłbym dodać przyciski bezpośrednio do układu i ustawić na nich słuchaczy. – Jim
Alternatywne podejście jest w pytaniu [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 –