我想显示一个带有 2 行文本的 AlertDialog 作为其消息。第二行文本的字体应该比第一行小,加下划线,我希望在点击时收到通知。此外,我希望 AlertDialog 看起来类似于通过调用 AlertDialog.Builder.setMessage 构建的。
自定义布局可以使用下面的代码完成,但结果看起来与使用 AlertDialog.Builder.setMessage 创建的对话框非常不同。附加的两个图像是由此代码创建的对话框,并分别通过调用 AlertDialog.Builder.setMessage。
关于如何在保留 AlertDialog 的默认主题的同时使用我的自定义布局有什么建议吗?
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
TextView tv1 = new TextView(this);
tv1.setText("first line");
TextView tv2 = new TextView(this);
tv2.setText("second line");
tv2.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv1.getTextSize() * .8f);
tv2.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
tv2.setOnClickListener(this);
layout.addView(tv1);
layout.addView(tv2);
builder.setView(layout);
builder.show();
编辑
好的,我无法使用以下代码产生合理的结果。问题在于第二行的文本大小被硬编码为 12 个下降,但我希望它实际上按比例小于第一行的文本大小 - 可能是第一行文本大小的 80%。关于如何做到这一点的任何建议?
(此外,确定何时单击文本的下划线部分会有点难看,但我想我可以弄清楚)
String text1 = "First line\n\n";
String text2 = "Second line";
SpannableString content = new SpannableString(text1 + text2);
content.setSpan(new UnderlineSpan(), text1.length(), text1.length() + text2.length(), 0);
content.setSpan(new AbsoluteSizeSpan(12, true), text1.length(), text1.length() + text2.length(), 0);
AlertDialog.Builder builder= new AlertDialog.Builder(this);
builder.setMessage(content);
builder.show();