インターネットで見つけたフォントを使用しようとしていますが、問題は「ネイティブの書体は作成できません」というFCを取得することです。
ListVIewのgetViewのコードは次のとおりです。
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist_font.ttf"));
カスタムROMを使用できる理由を教えてください取得できます [〜#〜] here [〜#〜] ..ファイルは.ttfです
フォントファイルが壊れているか、何らかの理由でサポートされていません。 SDカードにドロップしてファイルからロードし、アセットに問題がないことを確認できます。
私の問題は、アセットフォルダーの不適切な配置でした。
Android Studioを使用する場合、assetsフォルダーはソースセット内にある必要があります。
src/main/assets /
この回答 で見つかりました
これを引き起こす可能性のある基本的な4つの事柄があります。
拡張機能が大文字になっていないことを再確認してください。 suralist_font.TTF
フォントはしばしばそのように来るようで、見落とされるかもしれません。
私はこれと同じ問題を抱えていました。assets> fonts> whatever.ttfで作成しましたが、同じエラーが発生していました。フォント拡張機能(fonts/whatever.ttf)を追加し、すべてのケースで問題を修正しました。
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "fonts/suralist_font.ttf"));
むしろ古いスレッドですが、これが発生する可能性があるもう1つの理由を追加します。書体を呼び出す前にコンテンツビューを設定する必要があります。以下の例を参照してください
notは機能しますか:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
setContentView(R.layout.main);
}
動作します!
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // <-- call before typeface
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
}
私はAndroidスタジオを使用しています。私の場合、問題は資産フォルダーのパスにあり、Eclipseの資産フォルダーのパスはres/assets /ですが、Androidでは_ Studio its src/main/assets /したがって、フォントファイルをこのパスに移動するだけで、最終的に問題が解決しました。
フォントファイルが壊れているか、ファイル名を呼び出すときにスペルを間違えています。私は同じ問題を抱えていました、それはアセットフォルダーで指定されたファイル名が
roboto_black.ttf
そしてJavaファイルで宣言している間、私はそれを次のように綴っています:
roboto_blak.ttf
.ttfファイルがアセットフォルダーにある場合は、次を使用します。
Typeface type_bold = Typeface.createFromAsset(getAssets(), "roboto_black.ttf");
それ以外の場合は、fontsフォルダーにあり、使用します。
type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");
それが役に立てば幸い!
これはファイルが破損しているか、ファイルを間違ったフォルダーに配置したことが原因であることに注意してください。
Android documentation here
main/assets /これは空です。これを使用して、未加工のアセットファイルを保存できます。ここで保存したファイルは、そのまま.apkファイルにコンパイルされ、元のファイル名が保持されます。 URIを使用して通常のファイルシステムと同じ方法でこのディレクトリをナビゲートし、AssetManagerを使用してバイトストリームとしてファイルを読み取ることができます。たとえば、これはテクスチャとゲームデータの適切な場所です。
したがって、フォルダ構造はyourmodule/main/assets(たとえばa *** pp/main/assets ***)
これが役立つことを願って
Typeface.createFromAssetはアセットストリームをリークします: http://code.google.com/p/Android/issues/detail?id=9904
CommonsWareが this answer で述べているように
フォント自体に問題があると思います。このエラーは、OSのネイティブコードが書体を読み込もうとするとトリガーされます。
とにかくこれを試してください:
holder.tv_SuraName = (TextView)convertView.findViewById(R.id.Start_Name);
Typeface Font = Typeface.createFromAsset(this.getAssets(),"suralist_font.ttf");
holder.tv_SuraName.setTypeface(Font);
Android 4.0.3-4.0.4(エミュレータIceCreamSandwich mips 4.0.3で100%再現可能)で発生した同じ問題がありました。
問題は、ほとんどすべてのAndroidバージョンがそれらのTTFフォントをロードできたにもかかわらず、私が持っていたTTFフォントが正しくないことでした。だから私は https ://cloudconvert.com/woff-to-ttf (woffファイルもあるので)新しいTTFフォントを作成して、問題を解決しました。
Android Studio。
私にとってうまくいったのは、最初にフォント名を小文字とアンダースコアのみに変更することでした:Amatic-Sc.ttfからamatic_sc.ttf。
次に、set.TypeFaceメソッドでassets/fonts/amatic_sc.ttfをfonts/amatic_sc.ttfに変更します。
ただbuild --> clean
そして、レンダリングを開始しました。
Windowsのコミックsans msのCOMIC.TTFでも同じ問題が発生しました。 asset/fontsフォルダーに配置した元のファイルは上記のとおり大文字であるため、大文字で正確に入力する必要がありました。 Typeface.createFromAsset(getAssets()、 "fonts/COMIC.TTF");
問題の原因は小文字であることが判明しました:Typeface.createFromAsset(getAssets()、 "fonts/comic.ttf");