Пользовательские шрифты в Android

Я уже читал некоторые статьи и искал в Google, но я этого не делал.

Моя проблема связана с шрифтом.

В Android в "android:typeface" есть только 4 атрибута: Normal, Sans, Serif, Monospace.

Итак, что мне нужно сделать, чтобы использовать «Вердану» в моем приложении?

Пожалуйста, предложите мне правильный способ использования этого шрифта в приложении для Android.

Solutions Collecting From Web of "Пользовательские шрифты в Android"

Это простой пример … создайте папку в корне вашего проекта под названием assets/fonts/ затем вставьте файл шрифта TTF (в данном случае Verdana.ttf). Затем, если вы хотите применить этот шрифт, скажем, TextView , выполните следующие действия:

 import android.graphics.Typeface; public class FontSampler extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); TextView tv=(TextView)findViewById(R.id.custom); Typeface face=Typeface.createFromAsset(getAssets(), "fonts/Verdana.ttf"); tv.setTypeface(face); } } 

Этот пример был взят из книги ComonsWare (написанной Марком Мерфи). Вы можете загрузить полный пример из GitHub .

Вы можете использовать PixlUI по адресу https://github.com/neopixl/PixlUI

Импортируйте их .jar и используйте его в XML

  <com.neopixl.pixlui.components.textview.TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" pixlui:typeface="GearedSlab.ttf" /> 

Вы можете использовать простую библиотеку сторонних разработчиков EasyFonts, чтобы задать множество настраиваемых шрифтов для вашего TextView . Используя эту библиотеку, вам не придется беспокоиться о загрузке и добавлении шрифтов в папку assets / fonts. Также о создании объекта Typeface.

В этой библиотеке нет шрифта Verdana Font.

Но предоставляйте следующие шрифты. Что вы хотели бы использовать.

  • Roboto
  • Droid Serif
  • Droid Robot
  • свобода
  • Fun Raiser
  • Android Nation
  • Зеленый авокадо
  • признание

Просто:

 TextView myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setTypeface(EasyFonts.robotoThin(this)); 

Я автор этой библиотеки.

Что ж!!
Этот вопрос довольно старый, но все же, если кто-то ищет ответ (в 2015 году) о том, как применять собственный шрифт ко всем текстовым изображениям через xml-код, см. Ниже:

Во-первых :
Нам нужно добавить пользовательский шрифт внутри папки с ресурсами внутри вашего каталога приложений:
.ttf или .otf работают в случае Android

Во- вторых:
Создайте класс CustomTextView, который расширяет TextView, как показано ниже:

 public class CustomTextView extends TextView { public CustomTextView(Context context) { super(context); } public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void setTypeface(Typeface tf) { super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>")); } } 

В третьих:
Класс FontCache используется внутри метода setTypeface () CustomTextView. Цель состоит в том, чтобы выполнить базовое кэширование шрифтов с помощью HashMap:

 public class FontCache { private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>(); public static Typeface getFont(Context context,String fontname){ if(fontMap.containsKey(fontname)){ return fontMap.get(fontname); } else{ Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname); fontMap.put(fontname,tf); return tf; } } } 

В-четвертых: [Заключительный шаг] Все, что мы делаем сейчас, это использование CustomTextView непосредственно внутри нашего XML-файла, где требуется текстовое представление пользовательского шрифта:

 <<package_name>.CustomTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Custom Font Text" android:textSize ="18sp" android:textAppearance="?android:textAppearanceSmall" android:id="@+id/custom_txt" /> 

Извините, если это уже было опубликовано где-то на SO. Просто подумал поделиться, если это кому-то поможет!

Чтобы изменить (пользовательский) шрифт вашего приложения по всему миру, взгляните на каллиграфию

Просто добавьте каллиграфию в свой файл gradle.build и добавьте следующий фрагмент к вашему Application.onCreate() :

 CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/MyCustomFont.ttf") .setFontAttrId(R.attr.fontPath) .build() ); 

И в каждом мероприятии добавьте следующее:

 @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } 

Это все, что вам нужно сделать, чтобы изменить шрифт глобально в вашем приложении. Посмотрите на документы для более подробной информации.

 // My example show you how to change fonts into a normal textView or list view create a fonts folder into your assets dir of android and copy your custom font in that .. assets/fonts/monaco.ttf // Font path String fontPath = "fonts/monaco.ttf"; // Loading Font Face Typeface tf = Typeface.createFromAsset(getAssets(), fontPath); // CASE 1 : Inside your list view holder.name = (TextView) convertView .findViewById(R.id.textView_cityName); // set name of text in each row holder.name.setText(CitiesNames.get(position)); // set the type of font you want to set holder.name.setTypeface(tf); // CASE 2 : Inside your text view TextView tx = (TextView)findViewById(R.id.textview1); tx.setTypeface(tf); //vKj 
 TextView textView = (Textview) findViewById(R.id.mytext); Typeface face=Typeface.createFromAsset(getAssets(), "fonts/Verdana.ttf"); textView.setTypeFace(face);