2012-05-10 127 views
4

有人可能會建議一種方法來更改動態創建的AlertDialog(標題和正文)中的字體嗎?我嘗試了很多方法,但都沒有成功。代碼是:更改AlertDialog中的字體

public void onClick(View v) { 

    new AlertDialog.Builder(c) 
    .setTitle(data.eqselect) 
    // .set 
    .setIcon(R.drawable.icon) 
    .setMessage(Threads.myData[0]) 
    .setNegativeButton("Close", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      Log.d("AlertDialog", "Negative"); 
     } 
    }) 
    .show(); 
} 

回答

9

而不是設置alertdialog的文本,您應該設置一個自定義視圖窗體佈局。在你這樣做之前,修改你的視圖的字體。

TextView mycontent = (TextView) findViewById(R.id.yourid); 
     mycontent.setTypeface(Typeface.createFromAsset(getAssets(), "font.ttf") 

並設置提醒對話框的觀點,稱.setView(mycontent)代替setMessage() 雖然這不會改變你的標題,據我所知。

更新 我看到你是無法得到我在說什麼,所以這裏有一個完整的例子

TextView content = new TextView(this); 
     content.setText("on another font"); 
     content.setTypeface(Typeface.SANS_SERIF); 

//Use the first example, if your using a xml generated view 

    AlertDialog.Builder myalert = new AlertDialog.Builder(this); 
     myalert.setTitle("Your title"); 
     myalert.setView(content); 
     myalert.setNeutralButton("Close dialog", null); 
     myalert.setCancelable(true); 
     myalert.show(); 

這是使用我們剛剛創建一個TextView,它將不會有利潤或這樣的。如果你使用一個容易創建的佈局文件,你可以自定義所有這些設置,儘管你可以在代碼中這樣做。

當然,替換你想要的.. XML格式的樣本的TextView可能是字體:

<TextView 
     android:id="@+id/yourid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="8dp" 
     android:text="your content" /> 
+0

它會蹦出來的一樣嗎? –

+0

當然,你只是告訴他使用自定義視圖而不是默認視圖。試一試 –

+0

但它不會彈出作爲一個警告對話框,不會採取整個屏幕和佈局 –