Einstellungen (Bedienungshilfe) Schriftgröße auslesen / anpassen

M

Manuel1805

Ambitioniertes Mitglied
2
In den Einstellungen meines Handys kann ich Einfluss auf die Schriftgröße der Apps nehmen.
>Einstellungen >Display >Schriftgröße
s.a. https://support.google.com/mail/answer/2951689?hl=de

Kann ich die Schriftgröße (klein, normal, groß, sehr groß) auch mit Java auslesen und ggfls. nur für meine App festlegen?
 
Ok trennen wir mal die fragen:

Kann ich die Schriftgröße auslesen? Ja also die skalierung für fonts :
Code:
float fScale = getResources().getConfiguration().fontScale;

Du möchtest es nur während deiner App setzen?

Code:
//Vor dem Ändern
Configuration oldConf=getResources().getConfiguration();
...
Configuration conf = new Configuration();
conf.fontScale =1.0f;
getResources().getConfiguration().setTo(conf);
...
//nach dem Ändern und beim verlassen der App entweder beim schließen oder bei zumachen. Ich bin nicht sicher ob du damit Systemweit Einstellungen änderst oder nicht...
getResources().getConfiguration().setTo(oldConf);
 
  • Danke
Reaktionen: Manuel1805 und Kardroid
Hallo Jaiel,

leider muss ich dich noch mal was zu diesem Thema fragen...

Ich habe Den Code zum Testen bei mir wie folgt eingebaut

Code:
Button buttongross = (Button) dialog.findViewById(R.id.btn_gross);
        buttongross.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                float fScale = getResources().getConfiguration().fontScale;
                String schriftg = String.valueOf(fScale);
       
               
                conf.fontScale =fScale + 1.0f;
                getResources().getConfiguration().setTo(conf);
               
                TextView textView = (TextView) dialog.findViewById(R.id.lbl_size_act);
                textView.setText(schriftg);

               
            }
        });
        dialog.show();

Meine Textview zeigt mir die neue Schriftgröße an. Allerdings bleibt der Text gleichgroß. Hast Du eine Idee was ich falsch mache?

Gruß
Manuel
 
Bei Views kannst du das direkt ändern. Also du meinst die Schriftgröße ändert sich nciht wenn du dein Button buttongross da drückst oder wie?

Vllt einfach mal ein notify an die TextView dass sich was verändert hat und es sich neu zeichnen soll?!
 
Das Drücken des Buttons führt ja grds. zum Erfolg. Der Wert von fScale wird mit einem höheren Wert angezeigt (siehe Bilder).

Code:
 float fScale = getResources().getConfiguration().fontScale;
                String schriftg = String.valueOf(fScale);
       
               
                conf.fontScale =fScale + 1.0f;
                getResources().getConfiguration().setTo(conf);
               
                TextView textView = (TextView) dialog.findViewById(R.id.lbl_size_act);
                textView.setText(schriftg);


Aufruf des Menüs: Drücken des Vergrößerung-Buttons:
374876-85e357f4229e11ff1f7741068322d77c.jpg
374875-198caf151ead5a3b3e755e2ca469aa14.jpg


Allerdings erfolgt keine Änderung bei den Einstellungen. Ich habe die Werte auch auf den Faktor 0,15 geändert (ebenso ohne Erfolg).
Wenn ich die Schiftgröße in den Einstellungen auf groß ändere und dann das Menü aufrufe erscheint bei mir die Schriftgröße 1,15.

Ich wünsche mir eine globale Änderung der Einstellung der Schriftgröße,z.B. von Normal (1,0) auf "Klein" (0,85) oder "Groß" (1,15).
In meiner App verwende ich einen Viewpager und möchte alle Inhalte in der gleichen Schriftgröße anzeigen lassen.
Hilft hier ein Neuzeichnen der aktuellen View? Wenn ja, wie veranlasse ich dies?


Wert der Einstellungen vor und nach Drücken des Buttons:
374874-7f43b914b661b876aeca1eb5dc3e1a0b.jpg




Variable conf deklaration:

Code:
Configuration conf = new Configuration(); //NEU
    public Configuration oldConf; //NEU


Coder der beiden Buttons:

Code:
Button buttongross = (Button) dialog.findViewById(R.id.btn_gross);
        buttongross.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                float fScale = getResources().getConfiguration().fontScale;
                String schriftg = String.valueOf(fScale);
       
               
                conf.fontScale =fScale + 0.15f;
                getResources().getConfiguration().setTo(conf);
               
                TextView textView = (TextView) dialog.findViewById(R.id.lbl_size_act);
                textView.setText(schriftg);

               
            }
        });
        dialog.show();

       
        Button buttonklein = (Button) dialog.findViewById(R.id.btn_klein);
        buttonklein.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                float fScale = getResources().getConfiguration().fontScale;
                String schriftg = String.valueOf(fScale);
       
               
                conf.fontScale =fScale - 0.15f;
                getResources().getConfiguration().setTo(conf);
               
                TextView textView = (TextView) dialog.findViewById(R.id.lbl_size_act);
                textView.setText(schriftg);

               
            }
        });
        dialog.show();
       
       
       
   
   
    }

Vielen Dank
 

Anhänge

  • einstellung_schriftgroesse.png
    einstellung_schriftgroesse.png
    4,6 KB · Aufrufe: 212
  • schriftgroesse_nach_aenderung.png
    schriftgroesse_nach_aenderung.png
    6 KB · Aufrufe: 241
  • schriftgroesse_vor_aenderung.png
    schriftgroesse_vor_aenderung.png
    8,3 KB · Aufrufe: 209

Ähnliche Themen

D
Antworten
23
Aufrufe
2.312
Data2006
D
OnkelLon
Antworten
13
Aufrufe
1.876
OnkelLon
OnkelLon
H
Antworten
2
Aufrufe
1.263
Hcman
H
Zurück
Oben Unten