36

私のAndroidアプリケーションでは、ボタンをクリックするとアラートダイアログが表示されます。アラートのカスタムフォントを設定したい。Webを検索して、このテーマに関するチュートリアルと質問をいくつか見つけましたが、どれもうまくいきません。

フォントを変更するにはどうすればよいですか?

ありがとう

4

9 に答える 9

79

これを行うには、アラート ビルダーを使用してアラートを作成します。次に、このアラートから TextView を取得し、アラートの書体を設定します。

AlertDialog dialog = new AlertDialog.Builder(this).setMessage("Hello world").show();
TextView textView = (TextView) dialog.findViewById(android.R.id.message);
Typeface face=Typeface.createFromAsset(getAssets(),"fonts/FONT"); 
textView.setTypeface(face); 
于 2012-10-24T15:08:32.747 に答える
3

表示するダイアログの独自のレイアウトを定義できます。

ここにこれへのリンクがあります

Android でのカスタム ダイアログの作成

レイアウトでは、必要な typeFace で TextViews を定義できます。必要なフォントの otf ファイルをダウンロードする必要があります。それらをアセット ディレクトリに配置します。それを TextView の TypeFace として設定します。TypeFaceの設定方法

これは役に立ちます

TextView のフォントを変更するには?

于 2012-10-24T15:09:19.347 に答える
1

アイテムのリストを含む警告ダイアログがあったため、いくつかの回答を組み合わせて、少し単純化する必要がありました。警告ダイアログ自体のコードは次のとおりです。

val dialog = AlertDialog.Builder(this, R.style.MyAlertDialogTheme).setTitle(R.string.sort_by)
   .setSingleChoiceItems(modelList, selectedSortPosition) { _, position -> selectedSortPosition = position }
   .setPositiveButton(R.string.ok) { _, _ ->  }
   .setNegativeButton(R.string.cancel) { _, _ -> }.create()
dialog.show()
setFontsForDialog(dialog)

ここでは、Danilo の回答のスタイルを使用しましたが、そのために設定されたテーマの色を追加しました。

   <style name="MyAlertDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
      <item name="colorPrimary">@color/colorPrimary</item>
      <item name="colorAccent">@color/colorAccent</item>
      <item name="android:textAppearanceSmall">@style/MyTextAppearanceSmall</item>
      <item name="android:textAppearanceMedium">@style/MyTextAppearanceMedium</item>
      <item name="android:textAppearanceLarge">@style/MyTextAppearanceLarge</item>
   </style>

リスト項目のフォントのみを変更するため、このメソッドを追加しました。アプリで何度も使用する予定だったので、アクティビティ自体の拡張メソッドを作成しました。

private fun Activity.setFontsForDialog(dialog: AlertDialog) {
    val font = ResourcesCompat.getFont(this, R.font.theme_bold_pn)
    dialog.findViewById<TextView>(android.R.id.message)?.typeface = font
    dialog.findViewById<TextView>(android.R.id.button1)?.typeface = font
    dialog.findViewById<TextView>(android.R.id.button2)?.typeface = font
}
于 2019-08-17T09:24:59.740 に答える