我正在使用普通"选项菜单"。当我改变设备的原始大小时,假设" small"到"大" ,我的"选项菜单"也随之改变。
我想要一些方法可以保持我的"选项菜单的字体大小"在整个应用程序中保持静态。无论我的原始大小设置如何。
我尝试了以下链接:
How to set a font for the Options menu?
但这种方式我必须插入每个项目。有没有一种有效的方法?
答案 0 :(得分:4)
您可以在Application类中使用onConfigurationChanged并再次设置旧配置。
public class MyApp extends Application {
Configuration config;
private float mDefaultFont=1.15f;
@Override
public void onCreate() {
super.onCreate();
config = getResources().getConfiguration();
config.fontScale=mDefaultFont;
DisplayMetrics dm = getResources().getDisplayMetrics();
getResources().updateConfiguration(config, dm);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(config);
config.fontScale = mDefaultFont;
DisplayMetrics dm = getResources().getDisplayMetrics();
getResources().updateConfiguration(config, dm);
}
}
答案 1 :(得分:0)
在sp
属性中使用textSize
个单位时,系统会考虑原始大小设置。您可以使用dp
单位忽略此行为,但不建议这样做。
对于选项菜单,您可以尝试覆盖自api 11以来可用的菜单样式(itemTextAppearance
):
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:itemTextAppearance">@style/PopupMenuStyle</item>
</style>
<style name="PopupMenuStyle">
<item name="android:textSize">12dp</item>
</style>
</resources>