Font size of TextView in Android application changes on changing font size from native settings
Actually, Settings font size affects only sizes in sp
. So all You need to do - define textSize
in dp
instead of sp
, then settings won't change text size in Your app.
Here's a link to the documentation: Dimensions
However please note that the expected behavior is that the fonts in all apps respect the user's preferences. There are many reasons a user might want to adjust the font sizes and some of them might even be medical - visually impaired users. Using dp
instead of sp
for text might lead to unwillingly discriminating against some of your app's users.
i.e:
android:textSize="32dp"
The easiest to do so is simply to use something like the following:
android:textSize="32sp"
If you'd like to know more about the textSize
property, you can check the Android developer documentation.
Use the dimension
type of resources like you use string
resources (DOCS).
In your dimens.xml
file, declare your dimension variables:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textview_height">25dp</dimen>
<dimen name="textview_width">150dp</dimen>
<dimen name="ball_radius">30dp</dimen>
<dimen name="font_size">16sp</dimen>
</resources>
Then you can use these values like this:
<TextView
android:layout_height="@dimen/textview_height"
android:layout_width="@dimen/textview_width"
android:textSize="@dimen/font_size"/>
You can declare different dimens.xml
files for different types of screens.
Doing this will guarantee the desired look of your app on different devices.
When you don't specify android:textSize
the system uses the default values.