Android系统设置中有字体设置。我已经使用从默认Normal到Huge的所有选项测试了我的布局,但是我没有想到有人会使用Small。事实证明,有人这样做。
我的布局使用样式,而样式的某些维度受限于某些sp
或dp
值。为了平衡所有屏幕和字体大小的值,需要花费大量的试验和错误,我真的不想再从头开始重新调整它。我的应用程序有没有办法忽略字体大小设置?有没有办法对Android说我不希望应用程序受小于普通的选项的影响?
答案 0 :(得分:1)
以下有点脏,但是在Nexus 5(Android 4.4.2)上工作:
<强>的AndroidManifest.xml 强>
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:configChanges="fontScale" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<强> MainActivity.java 强>
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Make sure to do this before setContentView()
Configuration currentConfig = getResources().getConfiguration();
if (currentConfig.fontScale < 1.0f) {
currentConfig.fontScale = 1.0f;
getResources().updateConfiguration(currentConfig, null);
}
setContentView(R.layout.activity_main);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.fontScale < 1.0f) {
newConfig.fontScale = 1.0f;
}
getResources().updateConfiguration(newConfig, null);
// Restart to apply the new changes
AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,
Calendar.getInstance().getTimeInMillis() + 1000, // one second
PendingIntent.getActivity(this, 0, getIntent(), PendingIntent.FLAG_ONE_SHOT
| PendingIntent.FLAG_CANCEL_CURRENT));
finish();
}
}
希望这有帮助。
如果需要解释上述内容,请与我们联系。