2015-05-14 6 views
9

ich einige JSON-Daten mit einem formatierten String von Währung wie diese jedochAndroid: Russische Rubel Währung nicht auf bestimmten Telefon angezeigt?

₽35 

bekommen, bemerkte ich, dass auf einem Nexus 5 (Lollipop) es es richtig angezeigt wird, aber andere Handys wie das HTC ein Mini und Samsung GT-I9505, es zeigt ein Leerzeichen an.

ich versuchte, das Problem zu erforschen, ich keine andere Lösung als in der XML-Layout-Datei finden konnte, stellen Sie sicher, dass diese Linie

<?xml version="1.0" encoding="utf-8"?> 

vorhanden ist, aber ich habe noch das gleiche Problem

Bitte helfen

bearbeiten 15. Mai 2015

Laden benutzerdefinierte Schriftart NotoSans (Bitte beachten Sie, ich weiß, das ist Leck-Speicher würde, aber es ist nur einen kurzen Test)

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     TextView ruble = (TextView)findViewById(R.id.ruble); 
     Typeface myFont = Typeface.createFromAsset(getAssets(),"fonts/NotoSans-Regular.ttf"); 
     ruble.setTypeface(myFont); 
    } 

Der russische Rubel Symbol in strings.xml definiert (man beachte ich alles versucht)

 <string name="rubleSymbolJava">\u20BD</string> 
    <string name="rubleSymbolHTML">&#8381;</string> 
    <string name="rubleSymbolHTMLHex">&#x20bd;</string> 

Das gleiche Problem, auf älteren Handys als Quadrat gezeigt, aber funktioniert auf Android 5.0 ABER nichts älter.

GELöST Bitte beachten Sie meine Antwort

+2

Die copy/paste Sie haben sehen können In die Frage scheint Ihr Währungssymbol versagt zu haben. Leastways, es erscheint nicht als [das russische Rubelzeichen] (http://unicode-table.com/en/20BD/). Es ist möglich, dass die Schriftart, die auf diesen Geräten verwendet wird, dieses Unicode-Zeichen nicht enthält. – CommonsWare

+0

@DerGolem Ich verwende die Standardschriftart. Keine Gewohnheit. Es ist nur ein Standard-Button. –

+0

@DerGolem Ich habe gerade einen Test gemacht. Ich habe eine benutzerdefinierte Schriftart Roboto-Light.ttf verwendet, die nicht diese Glyphe hat, aber dennoch zeigt es auf Nexus 5 nur –

Antwort

11

Ich habe das behoben. Ich habe gerade den neuen Google Roboto Font verwendet, der zuletzt im Januar 2015 aktualisiert wurde und das Rubel-Symbol hat.

https://www.google.com/fonts/specimen/Roboto#pairings

Wissenschaftliche Untersuchungen haben gezeigt, dass im Jahr 2014 Russland ihr Währungssymbol geändert, so alt Schriftarten nicht die neue Glyphe haben so für andere, die ein ähnliches Problem haben, sehen, ob Ihre Schriftart

aktualisiert wurde
6

In der Standardschrift des Problemtelefons fehlt möglicherweise das russische Rubelzeichen. Versuchen Sie, es in einem TextView irgendwo in Ihrer App fest zu codieren, um sicherzustellen, dass dies tatsächlich das Problem ist und nicht irgendein anderer JSON-Parsingfehler (scheint weniger wahrscheinlich, da es auf einigen Telefonen funktioniert).

Wenn die fehlende Glyphe Ihr Problem ist, ist es ziemlich einfach, Ihre eigene Schriftart in Ihr Projekt aufzunehmen. Auf diese Weise können Sie sicher sein, dass Sie alle benötigten Glyphen unterstützen können.

Hier sind die Schritte so programmatisch zu tun:

Ich habe den grafischen Designer nicht viel benutzt, aber ich bin sicher, dass es dort auch nicht schwieriger ist. Diese Anweisungen gelten auch für das Android Eclipse-Plugin. Während der Code in Android Studio wahrscheinlich identisch sein wird, bin ich nicht sicher, dass die Ordner-Struktur ist das gleiche. Die docs sagen etwas über das Vermögen in main/assets statt nur Vermögenswerte platzieren, zum Beispiel ...

Ein paar Dinge zu beachten:

  • Vergewissern Sie sich, dass Ihre Verteilung der Schriftart, die Sie wählen doesn Keine Lizenz dieser Schriftart verletzen.
  • Ihre App verwendet nun nicht mehr die Standardschriftart des Geräts. Dies bedeutet, dass Ihre App auf verschiedenen Geräten ähnlicher und vorhersehbarer aussieht, sich jedoch von anderen Apps auf bestimmten Geräten abhebt, die möglicherweise sehr unterschiedliche Standardschriftarten verwenden. Die Größe der Datei .ttf wird zur Größe Ihrer App hinzugefügt. Die meisten Schriftarten sind ziemlich klein (~ 100 KB), aber einige werden groß (mehrere MB), besonders wenn sie viele verschiedene Sprachen unterstützen, was dann zu einem Problem werden könnte.
  • Stellen Sie sicher, dass Ihre Schriftart alle Glyphen in allen Sprachen unterstützt, die Ihr Projekt benötigt.

Ein zusätzlicher Bonus: Sie können einige Ihrer eigenen custom glyphs in die Schriftart in den leicht einfache einfarbige Vektorgrafiken in Ihrer Anwendung enthalten nur durch die entsprechende „Brief“ in eine Textview setzen (denken Sie daran Wingdings?).

+0

Danke für die Antwort. Empfiehlst du bestimmte Schriftarten? Bisher habe ich Helvetica und Ariel ausprobiert. Diesmal wird ein Quadrat angezeigt und nicht nichts. –

+0

Helvetica und Ariel (wenn Sie über diejenigen sprechen, die mit Windows ausgeliefert werden) sind aus Lizenzgründen möglicherweise keine gute Wahl. Ich habe das Problem nicht direkt untersucht, aber ich bezweifle, dass Microsoft zu glücklich wäre, wenn Sie mit Ihrer App Schriften versenden würden. [Google Fonts] (http://www.google.com/fonts) bietet eine Reihe von Alternativen, von denen einige eine gute Unterstützung für verschiedene Sprachen bieten. Auch hier müssen Sie die Lizenzen überprüfen. Ich weiß nicht, ob sie alle in Ordnung sind.Um die enthaltenen Glyphen zu überprüfen, können Sie den TTF auf Ihrem System installieren und die Windows-Zeichentabelle verwenden. –

+0

Vielen Dank für die Warnung, aber ich möchte die Lizenzprobleme ignorieren, um zu beweisen, ob es die Schriftart oder ein Back-End-Problem –

2

gefunden Lösung in dieser Antwort https://stackoverflow.com/a/36338231/1078641, hinzugefügt &amp;subset=all Parameter Roboto Schriftart Link.

Die Original-Link zu Roboto Schrift war wie die

<link href='https://fonts.googleapis.com/css?family=Roboto:400,300italic,300,400italic,500,500italic,700,700italic' rel='stylesheet' type='text/css'> 

Nachdem ich &amp;subset=all Parameter auf den Link habe ich erfolgreich Rubel-Symbol auf meinem Android-Gerät

<link href='https://fonts.googleapis.com/css?family=Roboto:400,300italic,300,400italic,500,500italic,700,700italic&amp;subset=all' rel='stylesheet' type='text/css'> 
+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/13565951) –

+0

@Milad, ich habe die Antwort hinzugefügt. – electroid

+0

Jetzt sieht es besser aus;) –

Verwandte Themen