Jim*_*Jim 11 java android android-dialogfragment
我有一个Android应用程序,它使用一些从XML布局膨胀的自定义对话框.对话框视图的内容来自XML布局,但实际的正面和负面按钮是通过调用构建器的setPositiveButton和setNegativeButton方法添加的,因此我无法控制(或至少不知道如何控制)样式按钮本身.
请参阅我的LoginConfirmationDialog.java文件中的onCreateDialog方法,该文件扩展了DialogFragment.它基本上弹出一个非常简单的对话框,要求确认谁登录(即"你是Joe Schmoe吗?",带有Yes和No按钮).
在这种情况下,XML布局只有一个TextView,为了简化这一点(因为用户将是需要大文本和大按钮的大手指脏手指的建筑工人),我使TextView的字体非常大.这两个按钮的文字字体要小得多,因为它们不是我的布局的一部分,并且添加了setPositiveButton和setNegativeButton方法,我该如何控制字体大小?
@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();
}
Run Code Online (Sandbox Code Playgroud)
ssa*_*tos 35
不要回来builder.create(),试试这个.-
final AlertDialog alert = builder.create();
alert.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button btnPositive = alert.getButton(Dialog.BUTTON_POSITIVE);
btnPositive.setTextSize(TEXT_SIZE);
Button btnNegative = alert.getButton(Dialog.BUTTON_NEGATIVE);
btnNegative.setTextSize(TEXT_SIZE);
}
});
return alert;
Run Code Online (Sandbox Code Playgroud)
花了一段时间,整合Asok的答案,因为我使用了按钮的匿名内部类,所以我需要处理按钮引用.这有效.确保它在messageDialog.show()行之后:
messageDialog.show();
messageDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextSize(TypedValue.COMPLEX_UNIT_SP, 25.0f);
messageDialog.getButton(AlertDialog.BUTTON_NEUTRAL).setTextSize(TypedValue.COMPLEX_UNIT_SP, 25.0f);
Run Code Online (Sandbox Code Playgroud)
注意:建议使用sp作为文本大小的单位.与px不同,它与设备密度无关.
| 归档时间: |
|
| 查看次数: |
17017 次 |
| 最近记录: |