2015-03-16 10 views
7

Ich habe eine Art „Monospace“ in meinem Android App zu verwenden:Was ist mit Monospace in Android Lollipop passiert?

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar" > 
     <!-- Customize your theme here. --> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:typeface">monospace</item> 
     <item name="android:textColorPrimary">@android:color/white</item> 
     <item name="android:itemTextAppearance">@style/MenuText</item> 
    </style> 

    <style name="M13Text"> 
     <item name="android:typeface">monospace</item> 
     <item name="android:textColor">@android:color/white</item> 
     <item name="android:textColorLink">@android:color/holo_red_light</item> 
    </style> 

    <style name="MenuText"> 
     <item name="android:typeface">monospace</item> 
     <item name="android:textColor">@android:color/black</item> 
    </style> 
</resources> 

Alles war gut, bis Lollipop angekommen, wenn es nicht die Proportionale Schrift mehr scheint Gebrauch und ich kann es sehen, ändern, wenn ich APIs Flip von 19 bis 21 in Android Studio.

Ich habe gegoogelt und nichts gefunden und ich schätze, es ist nur ein kosmetisches Problem, aber jeder hat irgendwelche Ideen, warum?

+0

Ich habe keine Probleme mit 'Monospace' auf Android 5.0. [Diese Beispiel-App] (https://github.com/commonsguy/cw-omnibus/tree/master/Fonts/FontSampler) funktioniert gut auf einem Nexus 4 - ich habe es gerade getestet. – CommonsWare

+0

Danke @CommonsWare. Neugierig. Offensichtlich mache ich etwas falsch, da das direkte Setzen der Schriftart nicht funktioniert ... Ich frage mich, ob das Elternattribut etwas außer Kraft setzt? –

+0

Haben Sie versucht, 'android: fontFamily =" @ null "' zu setzen? – alanv

Antwort

21

Das Material Textauftritte geben Sie das Attribut android:fontFamily anstatt android:typeface, so dass sie sans-serif-light verwenden können, sans-serif-medium usw. Dieses Attribut hat Vorrang vor Schrift, so dass Sie entweder müssen die family Wert überschreiben oder löschen.

<style name="MenuText"> 
    <item name="android:fontFamily">monospace</item> 
    ... 
</style> 
+2

Danke @alanv! Das gab mir die Lösung ' monospace monospace' tat den Trick. –

+0

In der Tat sollte die android: fontFamily auf "monospace" und nicht auf @null gesetzt werden. Für die einmalige Einstellung von Monospace können Sie auch android: fontFamily = "monospace" als eine Eigenschaft zu Ihrem in Ihrem Layout-XML hinzufügen, anstatt einen Stil dafür zu definieren. Nicht das Definieren von Stilen ist eine schlechte Sache, ich wollte nur diese Information hinzufügen. Danke für die Antwort und den Kommentar! – baske

+0

Wie setze ich diesen Stil später auf eine Textansicht? – ScottF