2012-07-18 33 views
2

我想用兩行文本作爲消息顯示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(); 

enter image description here

enter image description here

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(); 

enter image description here

回答

1

在您的清單中定義活動作爲主題對話框,然後你可以設計該活動看起來像任何你想要的,它會顯示爲一個對話框(活動在灰色下,只要你想)...

<activity 
      android:name=".MyDialog" 
      android:label="@string/app_name"     
      android:theme="@android:style/Theme.Holo.Dialog" 
      > 
      <intent-filter> 
       <action android:name="com.my.package.DIALOG" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

請注意,我在這裏添加的清單中唯一沒有的是活動節點中的主題屬性。

+0

儘管我想使用AlertDialog(如果可能的話),因爲我還會爲它添加正/負按鈕,並希望AlertDialog提供的按鈕欄默認裝飾。 – ab11 2012-07-18 21:21:32

+0

你可以添加你想要的任何按鈕到自己的活動!我不確定你想要做什麼(修改股票對話框的某些方面)是可行的。我相信不是。 – 2012-07-18 21:56:36

+0

如果通過調用AlertDialog.Builder.setPositiveButton等來添加按鈕,則AlertDialog會爲按鈕提供默認外觀。根據操作系統構建的不同,外觀會有所不同,因此在自定義「活動」中很難重新創建。同樣,AletDialogs中文本的默認外觀根據設備構建而不同。這就是爲什麼我想嘗試使用自定義AlertDialog,如果可能的話。 – ab11 2012-07-18 22:02:44

相關問題