对于所有原生大小的配置,如何使“选项菜单”的字体大小保持不变?

时间:2014-07-24 09:43:52

标签: android

我正在使用普通"选项菜单"。当我改变设备的原始大小时,假设" small"到"大" ,我的"选项菜单"也随之改变。

我想要一些方法可以保持我的"选项菜单的字体大小"在整个应用程序中保持静态。无论我的原始大小设置如何。

我尝试了以下链接:

How to set a font for the Options menu?

但这种方式我必须插入每个项目。有没有一种有效的方法?

2 个答案:

答案 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>