Button Font ändern

  • Antworten:37
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 59

18.06.2017, 13:01:19 via Website

Hallo liebe Community,

ich versuche seit einiger Zeit mit verschiedenen Lösungen die Schriftart bei meinen Buttons zuändern. Was für mich recht simpel klingt ist es anscheinend nicht. Ich habe einen Assets Ordner erstellt und dort unter dem Ordner "fonts" die Datei ClearLine.ttf eingefügt. Bei der ttf Datei hat er zuerst gemeldet das dort eine falsche Codierung verwendet wurde. Diesen Fehler konnte ich beheben.

Den Text im Button Namens "Anis" habe ich über strings definiert.

Dies ist der Code den ich in die .java Datei von der Activity eingefügt habe:

    Button Anis;
    Typeface tf1;

    Anis= (Button) findViewById(R.id.Anis);

    String fontPath = "fonts/ClearLine.ttf";

    tf1 = Typeface.createFromAsset(getAssets(), fontPath);

    Anis.setTypeface(tf1);

In der Preview verändert sich optisch rein gar nichts und beim Starten stürzt die App komplett ab.

Hab ich irgendwas simples übersehen?

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.889

18.06.2017, 13:12:55 via App

Sieht schon mal nicht schlecht aus, was ich dir gleich auf den Weg geben muss, ids werden klein geschrieben!

Zu deinem Problem kann man ohne LogCat nur spekulieren, was sagt der denn aus?

Ist in den Asset Ordner ein Unterordnen mit font? Und da drin auch die .ttf?
Ich der Asset am richtigen Ort angelegt?

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung-App

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Genetix x

Antworten
  • Forum-Beiträge: 11.184

18.06.2017, 13:13:37 via App

Wenn du deine ttf über getAssets lädst muss die Datei auch direkt im Assets Ordner vorliegen. Unterordnet o.ä. werden nicht unterstützt glaub ich

— geändert am 18.06.2017, 13:14:05

LG Pascal //It's not a bug, it's a feature. :) ;)

Genetix x

Antworten
  • Forum-Beiträge: 59

18.06.2017, 13:19:21 via Website

@Ludy Der Assets Ordner liegt im Main Ordner und hat auch den Unterordner mit font. Die Id hatte ich mit groß geschrieben weil er sie klein nicht gefunden hatte.

06-18 13:18:03.618 31373-31373/? E/Minikin: addFontFromAsset failed to create font fonts/ClearLine.ttf
06-18 13:18:03.619 31373-31373/? D/AndroidRuntime: Shutting down VM
06-18 13:18:03.620 31373-31373/? E/AndroidRuntime: FATAL EXCEPTION: main

@Pascal P. Deswegen hatte ich ja den Unterordner über den fontpath definiert. Sollte eigentlich darüber funktionieren meiner Meinung nach.

Antworten
  • Forum-Beiträge: 59

18.06.2017, 13:21:54 via Website

Konnte den

06-18 13:18:03.618 31373-31373/? E/Minikin: addFontFromAsset failed to create font fonts/ClearLine.ttf

beheben allerdings verbleibt noch dieser Error:

06-18 13:20:50.325 1640-1640/com.example.prototyp.cookingstar D/AndroidRuntime: Shutting down VM
06-18 13:20:50.326 1640-1640/com.example.prototyp.cookingstar E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.prototyp.cookingstar, PID: 1640
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.prototyp.cookingstar/com.example.prototyp.cookingstar.Gewuerze}: java.lang.RuntimeException: Font asset not found fonts/clearline.ttf
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2924)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by: java.lang.RuntimeException: Font asset not found fonts/clearline.ttf
at android.graphics.Typeface.createFromAsset(Typeface.java:284)
at com.example.prototyp.cookingstar.Gewuerze.onCreate(Gewuerze.java:28)
at android.app.Activity.performCreate(Activity.java:6912)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985) 
at android.app.ActivityThread.-wrap14(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6692) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.889

18.06.2017, 13:26:50 via App

Schau mal deine Schreibweise an fonts/clearline.ttf ist der Dateiname komplett klein geschrieben? Heißt der Unterordnen font oder fonts?

Setz mal vor dem getAssets() den Context der Activity.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung-App

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Pascal P.

Antworten
  • Forum-Beiträge: 59

18.06.2017, 13:39:44 via Website

Hab den Unterordner "fonts" jetzt rausgenommen und der Dateiname wird mit großem C und großem L geschrieben.

Wie ist das in dem Fall mit Context der Activity gemeint? So weit kenn ich mich dann doch noch nicht aus :)

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.889

18.06.2017, 14:13:56 via Website

Ich habe jetzt selber getestet und es funktioniert.
User uploaded photo

<Button
    android:id="@+id/anis"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

Es kann auch sein das die ttf fehlerhaft ist, am besten nochmal downloaden und integrieren.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung-App

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Genetix xPascal P.

Antworten
  • Forum-Beiträge: 59

18.06.2017, 14:23:10 via Website

Bei dir sieht die ClearLine.ttf Symbolmäßig auch komplett anders aus. Ist denn der Fehler "File was loaded in wrong coding" normal?

Hab jetzt nochmal runtergeladen und klappen will es immer noch nicht.

Antworten
  • Forum-Beiträge: 59

18.06.2017, 14:25:43 via Website

Komisch jetzt geht es auf einmal.

Die Wunder der Technik :D. Danke nochmal viel mals.

Sollte noch ein Problem aufkommen kann ich ja nochmal bescheid geben hoffe das stört nicht :).

Antworten
  • Forum-Beiträge: 59

18.06.2017, 14:32:26 via Website

So komisch es auch klingt aber es hat funktioniert nachdem ich die Datei gelöscht habe und wieder neu eingefügt habe :?

Nur ne allgemeine Frage: wäre es möglich hier im Forum um Mithilfe beim Projekt zu fragen?

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.889

18.06.2017, 14:35:56 via Website

Genetix x

wäre es möglich hier im Forum um Mithilfe beim Projekt zu fragen?

Das machst du doch schon ;)

Ansonsten haben wir noch diesen Bereich: https://www.nextpit.de/forum/android-jobs-angebote-nicht-kommerziell/neue-beitraege

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung-App

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Genetix x

Antworten
  • Forum-Beiträge: 59

18.06.2017, 14:37:41 via Website

Ist das Angebot denn kommerziell wenn die App nach Release Monatlich Gewinn abwirft, wo der Programmierer dann auch seinen Teil abbekommt? :?

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.889

18.06.2017, 14:56:36 via Website

Das ist nach der Entwicklung und nicht währenddessen, die Gewinnabschöpfung zählt in unseren Augen nicht als Kommerzielle Bezahlung (Lohn oder Gehalt im eigentlichem Sinne)

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung-App

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Genetix xPascal P.

Antworten
  • Forum-Beiträge: 59

18.06.2017, 15:10:46 via Website

Oke dann bedank ich mich nochmal für deine umfangreiche Hilfe und wünsch dir noch nen schönen Sonntag :)

Ludy

Antworten
  • Forum-Beiträge: 1.991

19.06.2017, 21:55:25 via Website

Hätte an dieser Stelle noch ne Frage: welches import android... muss man verwenden, dass Typeface unterstützt wird?
Könntet ihr mir bitte auch noch bei den anderen Fehlern beistehen? Was erfordert beispielsweise das unterwellte "font" an Code? :D

Aktuell siehts bei mir so aus:
image

— geändert am 19.06.2017, 21:56:55

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten
  • Forum-Beiträge: 3.648

19.06.2017, 21:57:28 via Website

Hallo Fritz

mit ALT + Enter bekommst du die Imports

Und "font" ist unterwellt , weil "font" keinen Bezug hat ( TypeFace)

P.S bitte keine ganzen Screenshots , kann man kaum erkennen
Bitte Codeschnipsel, oder Imageausschnitt - Danke

— geändert am 19.06.2017, 22:05:06

Liebe Grüße - Stefan
[ App - Entwicklung ]

Genetix x

Antworten
  • Forum-Beiträge: 59

19.06.2017, 21:57:56 via Website

Also für typeface nimmt man soweit ich weiß "import android.graphics.Typeface;"

Und dein Bild ist zumindest bei mir zu klein um etwas zuerkennen :)

Ludy

Antworten
  • Forum-Beiträge: 1.991

19.06.2017, 22:35:40 via App

Jo ich weiß, der Screenshot war alles andere als optimal - werd ich nächstes Mal besser machen.

Danke für eure Antworten, morgen integriere ich die Tipps und berichte. ;)

— geändert am 19.06.2017, 22:36:15

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten
  • Forum-Beiträge: 1.991

20.06.2017, 16:23:13 via Website

So, ich habs jetzt mal ausprobiert - im Android Studio zeigt es mir keinen Fehler an, beim Ausführen stürzt die App jedoch sofort ab mit der Meldung "Counter wurde beendet".

Hier ein Teil des Codes:
image

Und die Ordnerstruktur (passt der Ort des Ordners "font" so?):
image

Ich hoffe, es passt jetzt mit den Screenshots und bitte um Hilfe. :D

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten
  • Forum-Beiträge: 3.648

20.06.2017, 16:27:29 via Website

Hallo Fritz,

da nutzt auch ein Screenshot, sondern wir benötigen den ErrorLog von AS und den dazugehörigen CodePart.
Ansonsten ist nämlich unsere Kristallkugel nur beschränkt leistungsfähig :-)

a) Aber ich denke du hast einen Unterpfad vergessen
FONT = Typeface.createFromAsset(ctxt.getAssets(), "font/Roboto-Light.ttf");

b) Und dann vermute ich , dass du CaseSensitive nicht anwendest

P.S. Und dann ist es auch wichtig , try / catch statements zu setzen

— geändert am 20.06.2017, 16:33:58

Liebe Grüße - Stefan
[ App - Entwicklung ]

Fritz F.Genetix x

Antworten
  • Forum-Beiträge: 59

20.06.2017, 16:33:22 via Website

Also ich will ehrlich sein: Ich kenn mich nicht sonderlich mit Programmieren aus.

Allerdings solltest du vor allem die komplette Fehlermeldung schicken, da "Counter wurde beendet" sicher nicht die ganze ist.

Desweiteren gab es bei mir damals ein Problem, dass Android Studio die .ttf Datei immer im Assets Ordner gesucht hat und eben nicht im Font Ordner.

Damals hatte ich das mit diesem Code gelöst, vielleicht funktioniert es auch bei dir.

    String fontPath = "indieflower.ttf";
    font = Typeface.createFromAsset(getAssets(), fontPath);

swa00

Antworten
  • Forum-Beiträge: 3.648

20.06.2017, 16:36:31 via Website

OT :

Also ich will ehrlich sein: Ich kenn mich nicht sonderlich mit Programmieren aus.

Aber du gibst dir Mühe - Manchmal zu viel :-)

.

Sagt : Habt ihr alle die letzten Tage zu viel Zeit ???

Pascal und ich kommen mit den Fällen hier nicht rum ....

Ihr ballert uns kräftig zu :-) :-) :-)

— geändert am 20.06.2017, 16:37:01

Liebe Grüße - Stefan
[ App - Entwicklung ]

Genetix x

Antworten
  • Forum-Beiträge: 11.184

20.06.2017, 16:41:01 via Website

Naja je nach Bundesland sind jetzt Sommerferien xD

Da hat man schließlich Zeit :P

Jetzt aber genug OT:

@GeneticX:
Ob du jetzt den String direkt übergibst oder eine Variable draraus machst macht überhaupt keinen Unterschied.
Um wirklich etwas sagen zu können brauchen wir den ErrorLog aus LogCat...

LG Pascal //It's not a bug, it's a feature. :) ;)

Genetix xswa00

Antworten
  • Forum-Beiträge: 1.991

20.06.2017, 17:19:11 via Website

@Genetix: In der Tat, "Counter wurde angehalten" ist auf dem Phone die einzige Fehlermeldung. Darunter noch standardmäßig der "App neu starten"-Button.

Hier mal der Log aus AS (ich hoffe, das ist dieses "logcat" :P):
image

@Stefan: was ist dieses "CaseSensitive"?
Btw: ich hab zwar keine Sommerferien, aber die letzten zwei Schulwochen und wir machen so gut wie NICHTS mehr. :D
Da bleibt Zeit für AS...

— geändert am 20.06.2017, 17:20:48

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten
  • Forum-Beiträge: 59

20.06.2017, 17:24:14 via Website

Wir meinen nicht die Fehlermeldung auf dem Handy sondern in Android Studio zu finden nach dem Start der App in "Android Monitor"

Das was du da im Screen hast zeigt den Fehler nicht.

Antworten
  • Forum-Beiträge: 11.184

20.06.2017, 17:24:38 via Website

Ne das ist nicht der Log:
Schau mal hier: https://developer.android.com/studio/debug/am-logcat.html
Ist erklärt wie man Log auswertet und nutzt (auf für eigenes Dbugging)

CaseSensitive: Groß- und Kleinschreibung wird berücksichtigt
CaseInsensitive: Groß- und Kleinschreibung wird ignoriert.

Und das mit dem "NichtsTun" in der Schule kommt mir mehr als bekannt vor :P

— geändert am 20.06.2017, 17:25:12

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 1.991

20.06.2017, 17:28:51 via Website

Gut, dann hier der/das richtige Logcat:
image

Die meiste Zeit kommen im Logcat ständig neue Zeilen dazu und es steht auch öfters dort: "Too much output to process".
Ist das gut oder schlecht? :?

Ich komm mir irgendwie blöd vor, so wie ich mich anstelle. (silly)
Wenn ich nicht mal so etwas vermeintlich einfaches wie Button-Font-ändern schaffe... :D :(

@Pascal: danke für den Link, jetzt kenn ich mich schon besser aus. Ich nehme mal an, ich soll die Errors screenshotten? (Hab den Link erst nach dem vorigen Screenshot-Posten bemerkt)

— geändert am 20.06.2017, 17:30:53

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten
  • Forum-Beiträge: 11.184

20.06.2017, 17:30:49 via Website

as ist noch nicht das richtige ;)

Du musst die App im Dbug-Modus starten, dann warten bis die Startet und dann im LogCat schauen, da werden dann rote Zeilen (=Error) reinkommen, diese sind der eigentliche Fehler.

Und kopiere diese bitte direkt als Text hier rein, denn auf Bildern liest das sich eher schlecht.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 1.991

20.06.2017, 17:33:46 via Website

Dann hier jetzt wirklich das richtige Logcat :D:

06-20 17:32:23.660 21272-21272/? E/Zygote: v2
06-20 17:32:23.661 21272-21272/? E/Zygote: accessInfo : 0
06-20 17:32:27.873 21272-21272/com.example.jonpe.testbeispielandroiddevelopersofficialsite E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.jonpe.testbeispielandroiddevelopersofficialsite, PID: 21272
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jonpe.testbeispielandroiddevelopersofficialsite/com.example.jonpe.testbeispielandroiddevelopersofficialsite.MainActivity}: java.lang.RuntimeException: Font asset not found indieflower.ttf
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2947)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6688)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by: java.lang.RuntimeException: Font asset not found indieflower.ttf
at android.graphics.Typeface.createFromAsset(Typeface.java:284)
at com.example.jonpe.testbeispielandroiddevelopersofficialsite.MainActivity.onCreate(MainActivity.java:29)
at android.app.Activity.performCreate(Activity.java:6912)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2900)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008) 
at android.app.ActivityThread.-wrap14(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6688) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 

— geändert am 20.06.2017, 17:34:53

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten
  • Forum-Beiträge: 11.184

20.06.2017, 17:39:55 via Website

So wenn du jetzt idesen anschaust ist dies der Fehler:
java.lang.RuntimeException: Font asset not found indieflower.ttf

Die Datei wird nicht gefunden.
Und du hast unter Assets noch einen Font Ordner, den du in deinem Pfad garnicht mit berücksichtigt wird.

LG Pascal //It's not a bug, it's a feature. :) ;)

Fritz F.Ludy

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.889

20.06.2017, 17:41:01 via Website

Hallo Fritz,

schau ob die Schreibweise richtig ist - groß und klein Schreibung.

Font asset not found indieflower.ttf

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung-App

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Fritz F.Pascal P.

Antworten
  • Forum-Beiträge: 1.991

20.06.2017, 17:46:07 via Website

Heeeeeeeeyyyyy, es funktioniert! Ich hab nun alle Font-Dateien einfach lose in den Assets-Ordner verschoben und das TextView ist korrekt verändert, auch am Phone in der App selbst. Danke erstmal dafür. Noch eine Frage: wie kann ich AS mitteilen, dass es im Unterordner "font" und nicht in "Assets" suchen soll (der Ordnung halber)?

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten
  • Forum-Beiträge: 3.648

20.06.2017, 17:46:31 via Website

Er hat den /font subfolder vergessen und wahrscheinlich kein Case-Sensitive

(Wie oben schon von mir geschrieben)

a) Aber ich denke du hast einen Unterpfad vergessen
FONT = Typeface.createFromAsset(ctxt.getAssets(), "font/Roboto-Light.ttf");
b) Und dann vermute ich , dass du CaseSensitive nicht anwendest

— geändert am 20.06.2017, 17:46:53

Liebe Grüße - Stefan
[ App - Entwicklung ]

Fritz F.

Antworten
  • Forum-Beiträge: 1.991

20.06.2017, 17:50:36 via Website

Jo danke Leute, jetzt hab ichs eh. :D
Nächstes (wenn auch kleineres) Problem: wenn ich eine anderen Font anwende, ist das TextView im Endeffekt in der App nicht mehr mittig. Das sind sie aber in der Design-Preview in AS, wo der endgültige Font aber komischerweise noch nicht "angelegt" ist. Kann man das irgendwie verhindern, dass das TextView verrutscht?

— geändert am 20.06.2017, 17:52:14

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.889

20.06.2017, 17:56:44 via Website

Ist doch klar, warum das in der Prev nicht angezeigt wird. Du weißt die ttf erst bei der Erstellung der Activity und dessen Views, dem entsprechenden View zu.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung-App

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Fritz F.

Antworten
  • Forum-Beiträge: 1.991

20.06.2017, 17:57:01 via Website

Tut mir echt leid, dass ich irgendwie an euch vorbeirede und ständig neue Informationen bringe (oder auch nicht xD).
Jetzt hab ich es selbst geschafft, den Text ins "center" des TextViews zu bekommen. Ganz einfach in den Design-Properties des TextViews mit textAlignment "center". Es wäre doch so einfach gewesen... Danke für eure Mühen. (cool)

Samsung Galaxy S9
- Android 8.0
- frei für alle Netze

Antworten