it-swarm.com.de

Problem bei Verwendung einer benutzerdefinierten Schriftart - "native Schrift kann nicht erstellt werden"

Ich versuche, eine Schriftart zu verwenden, die ich im Internet gefunden habe, aber das Problem ist, dass ich einen FC mit "nativer Schrift kann nicht erstellt werden".

Hier ist der Code im getView meiner ListVIew:

        holder.tv_SuraName   =(TextView)convertView.findViewById(R.id.Start_Name);
        holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist_font.ttf"));

Kann mir jemand sagen, warum ich die benutzerdefinierte rom verwenden kann? Sie erhalten es HIER .. die Datei ist .ttf

49
Omar

Die Schriftartdatei ist entweder beschädigt oder aus irgendeinem Grund nicht unterstützt. Sie können es auf der SD-Karte ablegen und aus der Datei laden, um sicherzustellen, dass es kein Problem mit Ihren Assets ist.

36
Nikolay Elenkov

Mein Problem war die falsche Platzierung des Assets-Ordners. 

Bei der Verwendung von Android Studio sollte sich der Ordner "Bestände" innerhalb der Quellensätze befinden, z. 

src/main/vermögenswerte /

Gefunden in diese Antwort

48
roelvogel

Es gibt im Wesentlichen 4 Dinge, die dies verursachen können:

  1. Sie verwenden die falsche Erweiterung
  2. Sie müssen die Zeichensätze im Assets-Ordner ablegen und nicht in Assets/fonts /
  3. Sie haben die Schriftarten falsch geschrieben
  4. Die Schriftarten müssen Kleinbuchstaben sein (in meinem Fall bestand die Lösung darin, MyFont.ttf in myfont.ttf umzubenennen, seltsam)
28
erdomester

Überprüfen Sie, ob die Erweiterung nicht in Großbuchstaben ist, dh. suralist_font.TTF

Schriftarten scheinen oft so zu sein, dass sie übersehen werden.

21
tlrmcknz

Ich hatte das gleiche Problem, ich erstellte meins in assets> fonts> whatever.ttf und bekam den gleichen Fehler. Ich habe die fonts-Erweiterung (fonts/whatever.ttf) hinzugefügt und das Problem auf jeden Fall behoben. 

 holder.tv_SuraName   =(TextView)convertView.findViewById(R.id.Start_Name);
 holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(),    "fonts/suralist_font.ttf"));
9
a54studio

Eher alter Thread, aber ich möchte noch einen weiteren Grund dafür hinzufügen: Sie müssen die Inhaltsansicht einstellen, bevor Sie die Schriftart aufrufen. Siehe Beispiel unten

Funktioniert nicht:

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

Funktioniert!

@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);
    }
2
Alina B.

Ich benutze Android Studio, in meinem Fall war das Problem mit dem Pfad des Assets-Ordners, im Eclipse-Pfad für Assets-Ordner ist res/assets/aber in Android Studio dessen src/main/assets/. Also verschiebe ich einfach meine Schriftdatei in diesen Pfad und löste schließlich das Problem.

2
Rahul Sharma

Entweder ist Ihre Schriftartdatei beschädigt, oder Sie machen beim Aufrufen Ihres Dateinamens einen Fehler. Ich hatte dasselbe Problem, weil der Dateiname im Asset-Ordner angegeben wurde 

roboto_black.ttf

und während ich in der Java-Datei deklariert habe, habe ich es geschrieben als:

roboto_blak.ttf

Wenn sich Ihre .ttf-Dateien im Asset-Ordner befinden, verwenden Sie Folgendes:

Typeface type_bold = Typeface.createFromAsset(getAssets(), "roboto_black.ttf");

Andernfalls, wenn es sich im Schriftartenordner befindet, dann verwenden Sie:

type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");

Ich hoffe es hilft!

1

Bitte beachten Sie, dass dies entweder auf eine beschädigte Datei zurückzuführen ist oder Sie die Datei im falschen Ordner abgelegt haben.

Laut Android-Dokumentation hier

haupt/Assets / Das ist leer. Sie können es verwenden, um unformatierte Asset-Dateien zu speichern. Dateien, die Sie hier speichern, werden in einer .apk-Datei so wie sie ist kompiliert und der ursprüngliche Dateiname bleibt erhalten. Sie können dieses Verzeichnis auf die gleiche Weise wie ein typisches Dateisystem mit URIs durchsuchen und Dateien als Bytestrom mit AssetManager lesen. Dies ist zum Beispiel ein guter Ort für Texturen und Spieldaten.

Daher sollte Ihre Ordnerstruktur yourmodule/main/assets sein (z. B. ein *** pp/main/assets ***).

0
d4c0d312

Hoffe das wird helfen

Typeface.createFromAsset verliert Asset-Stream: http://code.google.com/p/Android/issues/detail?id=9904

0

Wie CommonsWare in dieser Antwort angibt

Ich vermute, dass es ein Problem mit der Schrift selbst gibt. Dieser Fehler wird ausgelöst, wenn der native Code im Betriebssystem versucht, die .__ zu laden. Schrift.

Versuchen Sie es trotzdem:

holder.tv_SuraName = (TextView)convertView.findViewById(R.id.Start_Name);
Typeface Font = Typeface.createFromAsset(this.getAssets(),"suralist_font.ttf");
holder.tv_SuraName.setTypeface(Font);
0
Mr.James

Ich hatte dasselbe Problem, das auf Android 4.0.3-4.0.4 auftrat (100% reproduzierbar auf dem Emulator IceCreamSandwich Mips 4.0.3). 

Das Problem war, dass TTF-Schriftarten, die ich hatte, nicht korrekt waren, obwohl fast alle Android-Versionen diese TTF-Schriftarten laden konnten. Also benutzte ich https://cloudconvert.com/woff-to-ttf (da ich auch Woff-Dateien hatte), um neue TTF-Schriftarten zu erstellen, die mein Problem lösten.

0
negersiu

Ich habe seit ewigen Fehlern bei diesem Fehler in Android Studio debuggen. Nach dem Hinzufügen der Zeichensätze zum Assets-Verzeichnis das Projekt bereinigen und neu erstellen, wurde das Problem behoben.

0
RuudJ

Was für mich funktionierte, war zunächst, meinen Schriftnamen in Kleinbuchstaben und Unterstrich zu ändern: von Amatic-Sc.ttf in amatic_sc.ttf

Dann in der set.TypeFace-Methode change assets/fonts/amatic_sc.ttf in nur fonts/amatic_sc.ttf .

0
David JavaNab

Ich habe gerade einen build --> clean gemacht und mit dem Rendern begonnen. 

0
Anukool

Ich hatte das gleiche Problem mit COMIC.TTF von comic sans ms von Windows. Da die Originaldatei, die ich in Assets/fonts-Ordner abgelegt hatte, in Großbuchstaben wie oben geschrieben war, musste ich sie genau in Großbuchstaben ..__ eingeben. Typeface.createFromAsset (getAssets (), "fonts/COMIC.TTF");

es stellt sich heraus, dass das Problem durch die Kleinschreibung verursacht wurde: Typeface.createFromAsset (getAssets (), "fonts/comic.ttf");

0
Olumide Oyetoke