Подтвердить что ты не робот

Изменить шрифт заголовка диалогового окна Alert

Я хочу изменить шрифт заголовка диалогового окна Alert.

Кто-нибудь может сказать, как я могу это сделать?

4b9b3361

Ответ 1

Я нашел простое решение.

Сначала я устанавливал заголовок своего окна оповещений на

builder.setTitle("My Title");

Так что я не смог изменить его шрифт..

Тогда то, что сработало для меня, это...

Я создал простой TextView:

TextView tv2;

И установите все свойства TextView, которые я хотел...

И затем я заменил

builder.setTitle("My Title");

строка с

builder.setCustomTitle(tv2);

и теперь я могу изменить Title Color, Font Etc, изменив tv2's Свойства..

Ответ 2

Никакие ответы не позволяют изменить шрифт названия AlertDialog. Вот что я сделал:

Создайте класс ниже:

public static class TypefaceSpan extends MetricAffectingSpan {

  private final Typeface typeface;

  public TypefaceSpan(Typeface typeface) {
    this.typeface = typeface;
  }

  @Override public void updateDrawState(TextPaint tp) {
    tp.setTypeface(typeface);
    tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
  }

  @Override public void updateMeasureState(TextPaint p) {
    p.setTypeface(typeface);
    p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
  }

}

Добавьте следующий метод утилиты:

/**
 * <p>Return spannable string with applied typeface in certain style</p>
 *
 * http://stackoverflow.com/questions/8607707/how-to-set-a-custom-font-in-the-actionbar-title
 *
 * @param typeface
 *     The typeface to set to the {@link SpannableString}
 * @param string
 *     the string to place in the span
 * @return SpannableString that can be used in TextView.setText() method
 */
public static SpannableString typeface(Typeface typeface, CharSequence string) {
  SpannableString s = new SpannableString(string);
  s.setSpan(new TypefaceSpan(typeface), 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  return s;
}

Наконец, установите шрифт при создании AlertDialog:

Typeface typeface = Typeface.createFromAsset(getActivity().getAssets(), "fonts/your_font.ttf");
new AlertDialog.Builder(getActivity())
    .setTitle(FontUtils.typeface(typeface, "The title"))
    /* .. */
    .create();

Ответ 3

Просто используйте следующую строку, чтобы получить идентификатор заголовка диалога:

int dialogTitle = mCtnx.getResources().getIdentifier( "alertTitle", "id", "android" );

используйте этот файл для android.support.v7.app.AlertDialog

TextView title= (TextView) alertDialog.findViewById(R.id.alertTitle);

Ответ 4

Вам нужно раздуть или настроить и создать стиль и применить к AlertDialog

Вот как вы раздуваете макет и применяете его к AlertDialog

LayoutInflater li = LayoutInflater.from(ctx);
View view = li.inflate(R.layout.formatted_dialog, null);

AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle("Formatted");
builder.setView(view);

определить все форматирование и стили, необходимые в указанном вами макете.

Вы можете получить доступ к определенному текстовому виду, определенному в макете, с использованием завышенного вида i.e.

LayoutInflater li = LayoutInflater.from(ctx);
View view = li.inflate(R.layout.formatted_dialog, null);
TextView label=(TextView)view.findViewById(R.id.i_am_from_formatted_layout_lable);

Пример макета, сохраненный как res/layout/link.xml:

В вашем onCreate() или где или когда вы хотите вызвать AlertDialog

LayoutInflater li = LayoutInflater.from(this);
View view = li.inflate(R.layout.link, null);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Formatted");
builder.setView(view).create().show();
TextView text=(TextView) findViewById(R.id.text);

замените this на объект контекста, если вы вызываете какой-либо другой метод.

Ответ 5

Сделайте следующее:

Dialog dialog = new Dialog(ActivityName.this);
dialog.setContentView(R.layout.dialog_name);
dialog.setCancelable(true);
dialog.findViewById(R.id.text).setTypeface(Typeface.createFromAsset(getAssets(), "font.ttf"));

Сделайте свой файл font.ttf в папке с ресурсами и используйте его, как указано выше

Ответ 6

Вместо того, чтобы устанавливать текст alertdialog, вы должны установить пользовательскую форму представления своих макетов. И прежде чем вы это сделаете, измените свой шрифт. попробуйте этот пример

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

//Используйте первый пример, если вы используете созданный xml 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();

код для xml... замените шрифт в xml

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

Ответ 7

Включить этот макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <TextView
   android:id="@+id/text"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Hello_World"
   android:textColorLink="#FF00FF"
  />

</LinearLayout>

Затем используйте его внутри Ur Activity Activity

Dialog dialog = new Dialog(ActivityName.this);
dialog.setContentView(R.layout.dialog_name);
dialog.setCancelable(true);
dialog.findViewById(R.id.text).setTypeface(Typeface.createFromAsset(getAssets(), "font.ttf"));


Еще один путь и этот

Ответ 8

Вы можете изменить внешний вид AlertDialog, следуя этому блоку кода:

AlertDialog dialog = new AlertDialog.Builder(this).setMessage("Message").show();
TextView textView = (TextView) dialog.findViewById(android.R.id.message);
textView.setTextSize(10);//to change font size

//to change font family
Typeface face = Typeface.createFromAsset(getAssets(),"font/fontFileName.ttf");
textView.setTypeface(face);

Поместите файл шрифта в папку с ресурсами. В моем случае я создал подкаталог под названием font.

И вы также можете проверить для этого Question, у которых есть принятый ответ.

Ответ 9

Вы можете добавить это

TextView textViewt = (TextView) alertDialog.findViewById(android.R.id.title);
textViewt.setTypeface(your font typeface);

после строки

alertDialog.show();

Ответ 10

Вы также можете попробовать Spannable.

            SpannableString s = new SpannableString("My App");
            s.setSpan(new TypefaceSpan(this, "font.otf"), 0, s.length(),
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            s.setSpan(new RelativeSizeSpan(1.3f), 0,s.length(), 0);
            builder.setTitle(s)

Ответ 11

Существует простой способ установить новый пользовательский вид заголовка диалога. Мы можем определить каждое пользовательское представление, например TextView, добавить некоторые пользовательские свойства и, наконец, установить его в заголовок диалога, например, ниже:

 AlertDialog.Builder builder = new AlertDialog.Builder(OrderItemsActivity.this);



        TextView title_of_dialog = new TextView(getApplicationContext());
        title_of_dialog.setHeight(50);
        title_of_dialog.setBackgroundColor(Color.RED);
        title_of_dialog.setText("Custom title");
        title_of_dialog.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
        title_of_dialog.setTextColor(Color.WHITE);
        title_of_dialog.setGravity(Gravity.CENTER);

        builder.setCustomTitle(title_of_dialog);
        builder.create().show();

Здесь я определяю динамический TextView и устанавливаю для него некоторые свойства. Наконец, я установил заголовок диалога с помощью функции setCustomTitle().

Ответ 13

Попробуйте задать тему для диалога. Измените атрибут шрифта следующим образом:

<style name="CustomDialog" parent="android:Theme.Dialog">
    <item name="android:typeface">serif</item>
</style>

Хотя это изменяет шрифты всех текстовых просмотров в диалоговом окне. поэтому убедитесь, что TextViews установлены на правильный шрифт

Ответ 14

TextView tv_message = new TextView(this);

                Typeface typeface = Typeface.createFromAsset(
                        getAssets(),
                        "fonts/OpenSans-Semibold.ttf"
                );


                // Set the text view layout parameters
                tv_message.setLayoutParams(
                        new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
                );

                // Set message text color
                tv_message.setTextColor(Color.RED);

                // Set message gravity/text align
                tv_message.setGravity(Gravity.START);

                // Set message text size
                tv_message.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);

                // Set message custom font
                tv_message.setTypeface(typeface);

                // Set message background color
                tv_message.setBackgroundColor(Color.YELLOW);

                // Set message text padding
                tv_message.setPadding(15, 25, 15, 15);

                tv_message.setText("Are you sure?");
                tv_message.setTextColor(Color.BLACK);