web-dev-qa-db-ja.com

警告ダイアログボックスのタイトルのフォントを変更

アラートダイアログのタイトルのフォントを変更したい。

誰がどうすればそれを行うことができるのか誰にも分かりますか?

23
Eagle_Eye

簡単な解決策を見つけました。

最初、私は警告ボックスのタイトルを

builder.setTitle("My Title");

そのため、フォントを変更できませんでした。

それから私のために働いたのは..

私は簡単なTextViewを作成しました:

TextView tv2;

そして、私が欲しかったTextViewのすべてのプロパティを設定します...

そして、私は私の

builder.setTitle("My Title");

と並ぶ

builder.setCustomTitle(tv2);

そして今、私はTitle ColorFontその他変更によるtv2's プロパティ..

28
Eagle_Eye

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();
17
Jared Rummler

次の行を使用して、ダイアログのタイトルの識別子を取得します。

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

これをAndroid.support.v7.app.AlertDialogに使用します

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

8
MohammadReza

警告ダイアログのテキストを設定する代わりに、レイアウトからカスタムビューを設定する必要があります。その前に、ビューのフォントを変更します。この例を試してください

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

// XMLで生成されたビューを使用している場合は、最初の例を使用します

 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" />
2
Fayaz Bangash

スタイルをインフレートまたはカスタマイズして作成し、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);
_

指定したレイアウトで必要なすべてのフォーマットとスタイルを定義します。

膨張ビューを使用して、レイアウトで定義された特定のテキストビューにアクセスできます。

_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をコンテキストオブジェクトに置き換えます。

2
droidchef

このようにしてください:

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ファイルをアセットフォルダーに入れ、上記のように使用します。

2
Gaurav Arora

このレイアウトを含める:

<?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内で使用します

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


別の 方法 および これ

1
Sam

これを追加できます

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

行の後

alertDialog.show();
0
B.Habibzadeh

ダイアログのタイトルに新しいカスタムビューを設定する簡単な方法があります。 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()」関数を使用してダイアログのタイトルに設定します。

0
masood

次のコードブロックに従って、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というサブディレクトリを作成しました。

そして、あなたはこれをチェックすることもできます 質問 受け入れられた答えがあります。

0
Sanjay Joshi

サポートライブラリ26のこのメソッドを使用します。

ResourcesCompat.getFont(context, R.font.<YOUR_FONT>);

enter image description here

続きを読む:ソース

0
Rupesh Yadav

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)
0
samirprogrammer