我遇到了一个非常非常简单AlertDialog
的问题,它创建了我的“关于”对话框,有三个选项。看看它在仿真器,我的HTC Sensation和Galaxy S2上的样子:
该对话框由此(伪)代码创建:
builder.setPositiveButton("OK", null);
builder.setNeutralButton("Disclaimer", [...]);
builder.setNegativeButton("Jetzt zum Market", [...]);
这很简单,我从未想过不同设备上的最大文本长度差别如此之大!另外:我认为三星撕毁“免责声明”是如此混乱,而不是谈论“市场”这个词的缺失。
如果这已成为一个问题,我该如何创建一个简单的AlertDialog
?
有线索吗?想象一下设置如此大的字体甚至“取消”不再适合的设备! 叹息我该如何预防?
感谢您的建议!!
答案 0 :(得分:1)
Drew DeNardo的答案几乎是正确的。
myDialog.getButton(BUTTON_POSITIVE)返回null,因为它尚未创建。
您需要覆盖onShow:
final AlertDialog alert= builder.create();
alert.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
float textSize = 15.0f;
Button positive = alert.getButton(AlertDialog.BUTTON_POSITIVE);
positive.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
Button neutral = alert.getButton(AlertDialog.BUTTON_NEUTRAL);
neutral.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
Button negative = alert.getButton(AlertDialog.BUTTON_NEGATIVE);
negative.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
}
});
答案 1 :(得分:0)
以“DP”为单位指定字体大小(与密度无关的像素)。这将指示每部手机缩放字体,使其在所有设备上看起来(或多或少)相同。
http://developer.android.com/guide/practices/screens_support.html
我不确定为什么这个答案被低估了,我只能假设你不知道怎么做我建议的。让我提供更多细节。
builder.setPositiveButton("OK", null);
builder.setNeutralButton("Disclaimer", [...]);
builder.setNegativeButton("Jetzt zum Market", [...]);
AlertDialog myDialog = builder.create();
/* You'll have to play with this value to see what looks right */
float textSize = 15.0f;
Button positive = myDialog.getButton(BUTTON_POSITIVE);
positive.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
Button neutral = myDialog.getButton(BUTTON_NEUTRAL);
neutral.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
Button negative = myDialog.getButton(BUTTON_NEGATIVE);
negative.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
myDialog.show();
这将使按钮的字体大小与对话框的标题和正文不同。您可以使用此处的方法替换AlertDialog的内容视图:
http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog
在为内容创建的布局中,设置字体大小以匹配上述“textSize”变量的最终结果。您可以直接在布局中使用“dp”单位。
如果您还有其他问题,请让我知道它们是什么,不要只是投票。