当设置 - >显示 - > FontSize上的字体大小为“正常”时,我的应用程序按设计运行良好。
当我将字体大小更改为小/大时,整个内容将被混淆。我的应用程序内容密集,这对应用程序造成严重影响。
让我们说,动作栏标题就像“隐私和设置”。当系统设置中字体大小设置为“大”时,标题将运行边界/椭圆形。列表视图内容看起来很可悲。
有没有办法确保“设置” - >“字体”中的更改不会影响我们的应用?
Flipboard app可以做到这一点。
答案 0 :(得分:1)
我终于得到了解决方案。 谷歌严格建议使用“sp”字体。但是,如果您不希望根据用户字体设置缩放文本,请使用“dp”。如果您转到settings-> fonts字体,则字体大小在给定设备中不会更改。您的UI将保持与您为其设计的一样。
感谢Aswin的投入。感谢Joseph Earl在Android sp vs dp texts - what would adjust the 'scale' and what is the philosophy of support
回答问题答案 1 :(得分:1)
最好按照谷歌的建议,即使用'sp'而不是'dp'。这是一个帮助我的更新解决方案 - Solution
//in base activity add this code.
public void adjustFontScale( Configuration configuration) {
configuration.fontScale = (float) 1.0;
DisplayMetrics metrics = getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adjustFontScale( getResources().getConfiguration());
}
答案 2 :(得分:0)
以下是您可以做到的方法,但我不推荐。
float scale = getResources().getConfiguration().fontScale;
// This scale tells you what the font is scaled to.
// So if you want size 16, then set the size as 16/scale
float sizeNeeded = 16.0;
textView.setTextSize(sizeNeeded/scale);
希望这有帮助。
答案 3 :(得分:0)
在textSize中使用dp或dip代替sp