android - Orientation change increases TextView's text size -


i want save current text size sharedpreferences, , set when screen orientation changed.

i use code, when change screen orientation makes textsize bigger...

package com.example.zz;  import android.app.actionbar; import android.app.activity; import android.content.sharedpreferences; import android.content.sharedpreferences.editor; import android.os.bundle; import android.util.typedvalue; import android.view.menu; import android.view.menuitem; import android.widget.textview;  public class mainactivity extends activity {     textview text;     float size;     actionbar actionbar;     private final string text_size = "textsize";     final string mypref = "preference";     sharedpreferences settings;     editor editor;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         text = (textview) findviewbyid(r.id.textview1);          settings = this.getsharedpreferences(mypref, 0);         text.settextsize(settings.getfloat(text_size, 0));         editor = settings.edit();     }      public void sizeup(menuitem item) {         size = text.gettextsize();         text.settextsize(typedvalue.complex_unit_px, (float) (size + 5));      }      public void sizedown(menuitem item) {         size = text.gettextsize();         text.settextsize(typedvalue.complex_unit_px, (float) (size - 5));      }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.actionbar, menu);         return true;     }      @override     protected void onstop() {         super.onstop();          sharedpreferences.editor editor = settings.edit();         editor.putfloat(text_size, text.gettextsize());          editor.commit();     }  } 

thanks.

method gettextsize() returns text size in pixels, settextsize() treats size in sp units. that's why text looks bigger. should scale size before using in settextsize(). can this:

sharedpreferences.editor editor = settings.edit(); editor.putfloat(text_size, text.gettextsize()/getresources().getdisplaymetrics().scaleddensity); // put text size in sp editor.commit(); 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

inno setup - TLabel or TNewStaticText - change .Font.Style on Focus like Cursor changes with .Cursor -