Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should use "sp" instead of "dp" for text sizes

When I use

android:textSizes="20dp" 

in my XML for a textView, I got a warning "Should use "sp" instead of "dp" for text sizes."

Why should "dp" not be used? What is the correct approach? How can I achieve same textsizes on different displays?

like image 374
Peter Panne Avatar asked Jun 01 '14 15:06

Peter Panne


People also ask

What does SP mean in font size?

Both “dp”, or “density-independent pixel”, and “sp”, or “scaleable pixel” are basically the same as a “pt”, but for Android. The only difference between “sp” and “dp” is that “sp” is for measuring font sizes, and “dp” is for measuring everything else.

What is the difference between SP and dp?

sp - scalable pixels - this is like the dp unit, but it is also scaled by the user's font size preference. It is recommended that you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user's preference.

What is dp and SP in Android?

Scalable pixels (sp) serve the same function as density-independent pixels (dp), but for fonts. The default value of an sp is the same as the default value for a dp. The primary difference between an sp and a dp is that sp's preserve a user's font settings.

Which unit is best for text size on android?

Best unit for text is sp and for dimensions best unit is dp.


3 Answers

You should always use SP for fonts as it respects the user preferences. Here is an example Lets understand it with the help of an example -

Text with SP and DP

enter image description here

Change the device text setting (Settings -> Display -> Font Size)

enter image description here

Now reopen the app and relook at the texts, You will see that the text which was using SP has different height than DP.

enter image description here

like image 128
Ajit Singh Avatar answered Oct 14 '22 05:10

Ajit Singh


You can use sp and dp. As you know in Android settings you can change text size (Settings -> My device -> Display -> Font size). All your textView in sp would change after changing font size in settings, dp - would not change

like image 39
resource8218 Avatar answered Oct 14 '22 03:10

resource8218


You may use both

sp for font sizes
dp for everything else.

dp
Density-independent Pixels - an abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi screen, so one dp is one pixel on a 160 dpi screen. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Note: The compiler accepts both "dip" and "dp", though "dp" is more consistent with "sp".

sp
Scale-independent Pixels - this is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and user's preference.

For more info see at Difference between px, dp, dip and sp in Android?

like image 20
Giru Bhai Avatar answered Oct 14 '22 04:10

Giru Bhai