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
Post a Comment