web-dev-qa-db-ja.com

Androidのカスタムフォント

すでにいくつかの記事を読んでGoogleで検索しましたが、失敗しました。

私の問題は、フォントフェースに関するものです。

Androidでは、"Android:typeface"には4つの属性のみがあります:Normal、Sans、Serif、Monospace。

それでは、アプリケーションで「Verdana」を使用するにはどうすればよいですか?

Androidアプリケーションでこのフォントを使用する正しい方法を教えてください。

39
Paresh Mayani

これは簡単な例です。プロジェクトのルートに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の本(Mark Murphy著)から引用したものです。 GitHubから完全な例をダウンロードしてください

77
Cristian

https://github.com/neopixl/PixlUI で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" />
4
guest2343sdfdfs

上手!!
この質問はかなり古いですが、XMLコードを使用してすべてのTextviewsにカスタムフォントを適用する方法についての回答を探している場合(2015年)は、以下を直接参照してください。

最初の
アプリディレクトリ内のassetフォルダー内にカスタムフォントを追加する必要があります。
。ttfまたは。otfは両方ともAndroidの場合に機能します

2番目:
TextViewを以下のように拡張するクラスCustomTextViewを作成します。

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

番目:
CustomTextViewのsetTypeface()メソッド内で使用されるFontCacheクラス。目的は、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;
      }
    }
}

4番目: [最終ステップ]カスタムフォントテキストビューが必要な場合は、xmlファイル内で直接CustomTextViewを使用するだけです。

<<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のどこかに投稿されている場合。それが誰かを助けるなら、共有することを考えました!!

3
PunitD

シンプルな EasyFonts サードパーティライブラリを使用して、さまざまなカスタムフォントをTextViewに設定できます。このライブラリを使用することにより、フォントをダウンロードしてasset/fontsフォルダーに追加することを心配する必要はありません。タイプフェイスオブジェクトの作成についても。

このライブラリは、Verdana Fontフェイスを提供しません。

ただし、次のフォントフェイスを提供します。どちらを使用したいですか。

  • ロボト
  • ドロイドセリフ
  • ドロイドロボット
  • 自由
  • ファンレイザー
  • Android Nation
  • グリーンアボカド
  • 認識

単に:

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

私はこのライブラリの著者です。

2
Vijay Vankhede

アプリの(カスタム)フォントをグローバルに変更するには、 Calligraphy をご覧ください

単に書道を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));
}

アプリでフォントをグローバルに変更するために必要なことはこれだけです。詳細については、ドキュメントをご覧ください。

1
Stefan Medack
// 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
0
Vinod Joshi