Search code examples
androidtextview

Android text-size programmatically too big


I have two szenarios:

First:

 textView.setTextSize(getResources().getDimension(R.dimen.defaultTextSize));

Second in xml:

android:textSize="@dimen/defaultTextSize"

in values/dimen.xml i have declared defaultTextSize with 20sp

In my first case the text is much bigger (and different in some screenresulutions) than in my second case. Why? Have I done a mistake?


Solution

  • setTextSize() takes unit as pixel

    Use this

    public float pixelsToSp(float px) 
    {
        float scaledDensity = _context.getResources().getDisplayMetrics().scaledDensity;
        return px/scaledDensity;
    }
    
    textView.setTextSize(pixelsToSp(getResources().getDimension(R.dimen.defaultTextSize)));
    

    or

    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.defaultTextSize))