German Android-Einstellungen "Schriftgröße"

peternmb

Active Member
Licensed User
Hallo,
kann ich irgendwie auslesen, wie der Anwender in seinen Displayeinstellungen die Schriftgröße eingestellt hat?

Ich verwende für meine App eine an die Displaygröße und den Scalefaktor angepasste Schrftgröße,
z.B. "Tsize2= (3.0%y)/lv.Scale" oder auch
z.B. "Typeface.Default"
das passt dann z.B. bei eingestellter Schriftgröße "sehr groß" beides nicht mehr in der Optik.

Oder mache ich da was falsch und es gibt es eine andere Möglichkeit das zu lösen?
 

Filippo

Expert
Licensed User
Hallo peternmb,

ich stand auch schon vor dem gleiche Problem.
Mit diesem Code-Modul habe ich mein Problem gelöst. Damit wird in deine App die Schriftgröße immer auf normal gesetzt.
B4X:
'Code module
'Subs in this code module will be accessible from all modules.
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
End Sub

Sub getScale As Float
    Dim access As Accessiblity
    Return access.GetUserFontScale
End Sub

'User-Schriftgröße auf Normal zurücksetzten.
Sub SetPanelTypeface(parent As Panel)
    Dim fscale As Float = getScale
    For Each v As View In parent.GetAllViewsRecursive
        If fscale <> 1 Then
            ChangeFontsize(v, fscale)
        End If
    Next
End Sub

'User-Schriftgröße auf Normal zurücksetzten.
Sub SetActivityTypeface(act As Activity)
    Dim fscale As Float = getScale
    For Each v As View In act.GetAllViewsRecursive
        If fscale <> 1 Then
            ChangeFontsize(v, fscale)
        End If
    Next
End Sub

Private Sub ChangeFontsize(v As View, fscale As Float)
    If v Is Label Then
        Dim lbl As Label = v
        lbl.TextSize = NumberFormat2(lbl.TextSize / fscale,1,0,0,False)
    Else If v Is Button Then
        Dim s As Button = v
        s.TextSize = NumberFormat2(s.TextSize / fscale,1,0,0,False)
    End If
End Sub
 
Top