【问题标题】:Device settings independent font size设备设置独立字体大小
【发布时间】:2013-11-17 23:39:06
【问题描述】:

在开发我的应用程序时,我意识到如果有人改变了正常的设备字体大小,我的应用程序字体大小也会改变,这会破坏我设计的一些视觉效果。所以我想问一下是否有一种方法可以独立于设备设置来修复文本大小?

谢谢

【问题讨论】:

  • 这不是答案(因此是评论...),但您不应该真正尝试。例如,视障用户将使用他们设备提供的最大字体大小,而您的应用程序不尊重这一点是错误的(或至少是不友好的)。这就是为什么将文本大小指定为“sp”或缩放像素的原因。

标签: android textview font-size


【解决方案1】:

如果您想完全忽略用户的字体大小偏好,请使用dp 而不是sp 来设置字体大小。 lint 会抱怨 dp 的使用(这是正确的,因为您可能会给用户带来不便,并可能使您的应用程序无法供视障人士使用),但您不应该面临任何运行时问题。

如果您只想忽略运行时字体大小的更改,请使用"fontScale"

<application android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    ... >
    <activity android:name=".MyActivity"
        android:configChanges="fontScale">
        ...
    </activity>
</application>

【讨论】:

  • 它不能解决这个问题,它唯一做的就是在活动打开时忽略更改。如果您重新启动活动,字体将再次受到影响。
  • @JesusDimrix,字体大小使用dp
  • 是的,这是我最后的选择,但似乎没有其他好的解决方案
【解决方案2】:

查看源代码DisplaySettings.java,这里是控制字体大小比例的方法

public void writeFontSizePreference(Object objValue) {
    try {
        mCurConfig.fontScale = Float.parseFloat(objValue.toString());
        ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig);
    } catch (RemoteException e) {
        Log.w(TAG, "Unable to save font size");
    }
}

这是一个将字体大小保持在不同字体比例的解决方案。

float textSize = 22f;
mTextView.setTextSize(textSize / getResources().getConfiguration().fontScale);

我认为@shoe rat 的回答更适合于活动或应用程序上下文。

【讨论】:

    【解决方案3】:

    Google 建议您使用 SP 设置字体大小,以便 UI 设置会修改您的应用程序中的字体大小。你用的是 SP 吗?

    我相信使用 DP 或 PX 或其他方法可以解决您的问题。请记住,不建议出于辅助功能的目的这样做。

    有关可能的文本大小类型的完整列表,请参阅http://developer.android.com/reference/android/util/TypedValue.html

    他们在这里:

    COMPLEX_UNIT_DIP - TYPE_DIMENSION complex unit: Value is Device Independent Pixels.
    COMPLEX_UNIT_IN  - TYPE_DIMENSION complex unit: Value is in inches.
    COMPLEX_UNIT_MM  - TYPE_DIMENSION complex unit: Value is in millimeters.
    COMPLEX_UNIT_PT  - TYPE_DIMENSION complex unit: Value is in points.
    COMPLEX_UNIT_PX  - TYPE_DIMENSION complex unit: Value is raw pixels.
    COMPLEX_UNIT_SP  - TYPE_DIMENSION complex unit: Value is a scaled pixel.
    

    另外:请注意,并非所有这些选项都可以从 xml 文件中获得,并且其中一些设置只能以编程方式使用(至少我记得是这样)。

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 2020-03-01
      • 1970-01-01
      • 2013-06-18
      • 2017-08-24
      • 2020-06-12
      • 2017-04-29
      • 2014-10-21
      • 1970-01-01
      相关资源
      最近更新 更多