当我们从显示设置中增加字体大小和显示大小时,文本溢出

时间:2019-07-04 08:29:58

标签: android android-layout textview

我们有10种不同的textview,其值分别为95,96 ...... 100,101,105,如果Font Size和Display Size为Default,则一切都很好。 但是,一旦我们将“字体大小”和“显示大小”增加到“大”或“大”,所有这3个char值(如100,101 ... 105)都会像第二行一样拆分为100,第10行是第一行,第二行是0,这是因为UI看起来很奇怪 我们尝试将android:maxLines="1"设置为android:autoSizeTextType="uniform" android:autoSizeMinTextSize="12sp" android:autoSizeMaxTextSize="100sp" android:autoSizeStepGranularity="2sp" ,但是在此之后,最后一个字符被剪切/隐藏,例如100 我们还使用AutoTextSizing android解决方案

class all-plans:
    plans = []

     def __init__(self, size: int):
        self.plans.append(Plan.Plan('myid1'))
        self.plans.append(Plan.Plan('myid2'))
        //And so on, size times..

但是使用此解决方案也存在一个问题,所有3个char值100 ... 105都显示为小,所有char 95 ... 99都为大

现在,我正在寻找另一种最佳解决方案来解决我的问题,我希望所有文本95 ... 105都应是更相似的大小,并且在一行中,当用户更改字体大小和显示大小时,它的大小也应增加减小。在显示设置中。

任何帮助都是可贵的!

2 个答案:

答案 0 :(得分:0)

您需要在活动中覆盖此方法。每当用户更改屏幕Display或TextSize时,它都会更改系统的配置设置,然后您的应用还会选择该配置设置,并且在您的整个应用中,字体大小会变大或变小。它会打扰您的应用程序外观。如果要设置相同的配置,则可以实现以下代码。 您可以通过设置 config.fontScale =您的选择来更改字体大小; 您可以在不同的屏幕尺寸上检查 fontScale

@Override
    protected void attachBaseContext(Context newBase) {
        Log.d(TAG, "attachBaseContext: ");
        super.attachBaseContext(newBase);

        Log.v(TAG, "attachBaseContext: Applying new configuration");
        Resources res = newBase.getResources();
        Configuration config = new Configuration();
        config.fontScale = 1.0f;
        res.updateConfiguration(config, res.getDisplayMetrics());
    }

答案 1 :(得分:0)

您可以尝试在dimens.xml中定义单独的文本大小,例如 values-hdpi-> dimens.xmlvalues-xhdpi-> dimens.xml 等等。 如果仍然无法正常工作,请在dp中定义文本大小,而不是sp