我想在我的应用程序中指定我自己的文本大小,但我这样做有一个问题。

当我在设备设置中改变字体大小时,我的应用程序TextView的字体大小也会改变。


当前回答

像使用字符串资源(DOCS)一样使用资源的维度类型。

在你的dimension .xml文件中,声明你的维度变量:

<?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>

然后你可以像这样使用这些值:

<TextView
   android:layout_height="@dimen/textview_height"
   android:layout_width="@dimen/textview_width"
   android:textSize="@dimen/font_size"/>

您可以为不同类型的屏幕声明不同的dimension .xml文件。 这样做可以确保你的应用在不同设备上呈现出理想的外观。

当你不指定android:textSize时,系统使用默认值。

其他回答

实际上,设置字体大小只影响sp中的大小。所以你所需要做的-在dp中定义textSize而不是sp,然后设置不会改变应用程序中的文本大小。

这里是文档的链接:Dimensions

但是请注意,预期的行为是所有应用程序中的字体都尊重用户的偏好。用户可能有很多原因想要调整字体大小,其中一些甚至可能是医疗视力受损的用户。使用dp而不是sp作为文本可能会导致不情愿地歧视你的应用程序的一些用户。

即:

android:textSize="32dp"

我通常在资源文件中改变大小

<resources>
    <dimen name="siez_1">40px</dimen>
    <dimen name="siez_2">50px</dimen>
    <dimen name="siez_3">60px</dimen>

</resources>

对于kotlin,这对我来说是有效的

priceTextView.textSize = 12f

像使用字符串资源(DOCS)一样使用资源的维度类型。

在你的dimension .xml文件中,声明你的维度变量:

<?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>

然后你可以像这样使用这些值:

<TextView
   android:layout_height="@dimen/textview_height"
   android:layout_width="@dimen/textview_width"
   android:textSize="@dimen/font_size"/>

您可以为不同类型的屏幕声明不同的dimension .xml文件。 这样做可以确保你的应用在不同设备上呈现出理想的外观。

当你不指定android:textSize时,系统使用默认值。

在Activity中重写getResources()。

设置TextView的大小在sp通常像android:textSize="32sp"

override fun getResources(): Resources {
    return super.getResources().apply {
        configuration.fontScale = 1F
        updateConfiguration(configuration, displayMetrics)
    }
}