我们有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都应是更相似的大小,并且在一行中,当用户更改字体大小和显示大小时,它的大小也应增加减小。在显示设置中。
任何帮助都是可贵的!
答案 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.xml
,
values-xhdpi
-> dimens.xml
等等。
如果仍然无法正常工作,请在dp
中定义文本大小,而不是sp
。