2017-03-31 13 views
0

Wie die documentation heißt es:nicht auflösen kann Methode 'getFont (?)'

Android O lets you bundle fonts as resources by adding the font file in the res/font/ folder.

Als Ergebnis:

You can retrieve fonts by using the getFont(int) method, where you need to pass the resource identifier of the font that you want to retrieve. This method returns a Typeface object. This encodes the first of the weight or style variants of your font, if it is a font family. You can then use the Typeface.create(typeface, style) method to retrieve specific styles.

Note: The TextView already does this for you.

Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);

Leider, wenn ich den obigen Code verwende ich die folgende Fehlermeldung erhalten:

cannot resolve method 'getFont(?)' 

Früher verwendete ich folgendes zu tun:

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/myfont.ttf"); 

Aber jetzt, wenn ich versuche, die Schriftarten Ordner in Vermögenswerte Ordner zu erstellen, springt er automatisch innerhalb res Ordner.

Ich benutze android studio 2.3. Vielen Dank im Voraus für jede Hilfe.

+0

wie rufst du 'getFont'? Haben Sie ein gültiges 'Resources' Objekt? – njzk2

+0

Sind Sie auf Entwicklervorschau ausgerichtet? – Submersed

+0

@ njzk2 Ich weiß es nicht. Immer wenn ich versuche, den Schriftarten-Ordner im Ordner "Assets" zu erstellen, springt er aus dem Ordner und wechselt in den Ordner "res". – Darush

Antwort

0

Da ich nicht in der Lage war Fonts Ordner direkt aus Android Studio zu erstellen, öffnete ich den Projektordner mit Windows Explorer und erstellt die Schriftarten innerhalb app\src\main\assets\ Ordner und klebte dort meine Schriftdatei.

Wie so viele andere Jungs in den Antworten vorgeschlagen, musste ich Android Studio 2.4 Canary verwenden, um Android O neue Funktionen verwenden zu können. Die documentation Staaten:

Only Android Studio 2.4 includes support for all the new developer features available with Android O. So you need to get the canary version of Android Studio 2.4 to begin using the Android O SDK. But you can still keep your stable version of Android Studio installed.

0

Probieren Sie etwas wie dieses

Typeface yourFont = Typeface.createFromAsset(getAssets(), "fonts/yourFont.ttf"); 
+0

Danke für deine Antwort, aber ich habe die Frage aktualisiert. Ich habe das gemacht, aber ich bin nicht in der Lage, den Fonts-Ordner im Ordner "Assets" zu erstellen, da er automatisch den Fonts-Ordner im Ordner res – Darush

1

Ich habe es noch nicht aber so weit verwenden, wie ich weiß, Sie nur Android O-Gerät ausrichten können, wenn Sie Ihr Android-Studio 2.4 aktualisieren. Und Sie müssen Ihr SDK auch auf den neuesten Build aktualisieren. Denn wie doc sagt getFont() verfügbar in Android O.

+0

erstellt. Danke für die Antwort. Ich verwende compileSdkVersion 25 buildToolsVersion "25.0.2". Leider sind im SDK-Manager momentan keine Updates verfügbar. – Darush

+1

Lassen Sie Ihr Studio Updates von Kanarischen Kanälen herunterladen dann können Sie Studio 2..4 Vorschau herunterladen 3. Danach können Sie SDK-Tool-Version 26.0.0 herunterladen – Kunu

+0

Danke, ich lade derzeit die neuen Updates und wird jeder die Ergebnisse wissen lassen. – Darush

0

Sie Art und Weise habe ich es so war:

private TextView textView; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
. 
. 
. 
. 

textView = (TextView) findViewById(R.id.textView); 
Typeface mTextView = Typeface.createFromAsset(getAssets(),"fonts/your_font_style.ttf"); 
textView.setTypeface(mTextView); 

hoffe, dies wird Ihnen helfen.

0

Der Schriftartenordner sollte sich im Ordner "Assets" befinden, versuchen Sie also, dort einen Ordner zu erstellen.

+0

Der Schriftarten-Ordner springt automatisch aus dem Ordner "Assets" in den Ordner "res" – Darush

1

Da es sich um eine neue Methode handelt, die in O veröffentlicht wird, müssen Sie die Entwicklervorschau als Buildziel festlegen, um sie zu verwenden. Weitere Informationen finden Sie unter link.

0

Ich weiß, das spät sein könnte, aber hier ist die documentation für die Verwendung von geladenen Schriften mit API-Versionen vor 26 (Kompatibilitätsmodus).

Grundsätzlich haben Sie die Schriftartbeschreibung zu definieren, wie unten dargestellt (beide Attribute verwenden - App und Android) dann die ResourceCompat Klasse verwenden Ihre Schriftart programmatisch zuzugreifen:

Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);

<?xml version="1.0" encoding="utf-8"?> 
<font-family xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
     <font android:fontStyle="normal" android:fontWeight="400" 
      android:font="@font/myfont-Regular" 
      app:fontStyle="normal" app:fontWeight="400" 
      app:font="@font/myfont-Regular"/> 
     <font android:fontStyle="italic" android:fontWeight="400" 
      android:font="@font/myfont-Italic" 
      app:fontStyle="italic" app:fontWeight="400" 
      app:font="@font/myfont-Italic" /> 
</font-family> 

Prost!

Verwandte Themen