TextView.setTextSize behaves abnormally - How to set text size of textview dynamically for different screens
The difference here is that in the setTextSize(int size)
method, the unit type by default is "sp" or "scaled pixels". This value will be a different pixel dimension for each screen density (ldpi, mdpi, hdpi).
getTextSize()
, on the other hand, returns the actual pixel dimensions of the text.
You can use setTextSize(int unit, float size)
to specify a unit type. The constant values for this can be found in the TypedValue class, but some of them are:
TypedValue.COMPLEX_UNIT_PX //Pixels
TypedValue.COMPLEX_UNIT_SP //Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP //Device Independent Pixels
this problem happend because the getTextSize()
method return the size in pixels depend on screen density ! to get the Actual TextSize use this :
DisplayMetrics metrics;
metrics = getApplicationContext().getResources().getDisplayMetrics();
float Textsize =myTextView.getTextSize()/metrics.density;
myTextView.setTextSize(Textsize+1);
i hope it solve it :)
if Setting change font size,something cause show error,you can do as:
setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15.f);