2012-05-10 4 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() Хотя это не меняет свой титул, насколько я знаю.

Update Я вижу, вы не можете получить то, что я говорю, так что вот полный пример

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, который мы только что создали, и это не будет иметь прибыли или таковой. Если вы используете легко созданную форму в ваших файлах макета, вы сможете настроить все эти параметры, хотя вы можете сделать это для этого примера в коде.

Конечно, заменить шрифт с одним вы хотите .. образец TextView из XML может быть:

<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

Но он не выскочит в качестве диалогового окна предупреждения, который не отображает весь экран, а макет будет –

Смежные вопросы