我想用兩行文本作爲消息顯示AlertDialog。第二行文字的字體大小應小於第一行,並加下劃線,我希望在點擊時收到通知。另外,我希望AlertDialog看起來類似於通過調用AlertDialog.Builder.setMessage構造的AlertDialog。Android:在保留默認主題的同時自定義AlertDialog的智能方式
自定義佈局可以用下面的代碼完成,但結果看起來與使用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();
EDIT
好的,我無法產生具有下面的代碼一個合理的結果。問題在於第二行的文本大小被硬編碼爲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();
儘管我想使用AlertDialog(如果可能的話),因爲我還會爲它添加正/負按鈕,並希望AlertDialog提供的按鈕欄默認裝飾。 – ab11 2012-07-18 21:21:32
你可以添加你想要的任何按鈕到自己的活動!我不確定你想要做什麼(修改股票對話框的某些方面)是可行的。我相信不是。 – 2012-07-18 21:56:36
如果通過調用AlertDialog.Builder.setPositiveButton等來添加按鈕,則AlertDialog會爲按鈕提供默認外觀。根據操作系統構建的不同,外觀會有所不同,因此在自定義「活動」中很難重新創建。同樣,AletDialogs中文本的默認外觀根據設備構建而不同。這就是爲什麼我想嘗試使用自定義AlertDialog,如果可能的話。 – ab11 2012-07-18 22:02:44