请告诉我,我在android 7及更高版本上遇到了一个问题,如果我在attachBaseContext中制作了固定字体,那么当我旋转屏幕时,屏幕的宽度和高度是不确定的,它总是相同的。该如何解决?代码有什么问题?
ps。您可以在Android 7及更高版本的模拟器上查看此代码,旋转屏幕时,您会看到Toast中的宽度和高度没有变化。
清单:
android:configChanges="orientation|screenSize"
代码:
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
final Configuration override = new Configuration(newBase.getResources().getConfiguration());
override.fontScale = 1.3f;// fixed font
applyOverrideConfiguration(override);
}
//track screen rotation
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Toast.makeText(this, "w - " + String.valueOf(this.getWindowManager().getDefaultDisplay().getWidth()) + "\n" +
"h - " + String.valueOf(this.getWindowManager().getDefaultDisplay().getHeight())
, Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:0)
您将覆盖所有配置,而不仅是fontScale。
final Configuration override = new Configuration();
override.fontScale = 1.3f;// fixed font
applyOverrideConfiguration(override);
根据官方docs
一个配置,指定要在基础中修改哪些值 原始上下文资源的配置。如果基地 配置更改(例如由于方向更改), 除了那些具有 在此处被显式覆盖。