无法正常运作,因为它应该attachBaseContext

时间:2019-09-09 20:27:01

标签: java android xml

请告诉我,我在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();
}

1 个答案:

答案 0 :(得分:0)

您将覆盖所有配置,而不仅是fontScale。

final Configuration override = new Configuration();
override.fontScale = 1.3f;// fixed font
applyOverrideConfiguration(override);

根据官方docs

  

一个配置,指定要在基础中修改哪些值   原始上下文资源的配置。如果基地   配置更改(例如由于方向更改),   除了那些具有   在此处被显式覆盖。