flutter在安卓13设备上字体被加粗,设置FontWeight.normal也不管用,怎么才能在安卓13上正常显示字体,除了更换自定义字体
你试过自己下载字体包再导入pubspec.yaml嘛
在某些 Android 设备上,系统对字体的渲染可能会导致字体加粗。通常情况下,可以使用 FontWeight.normal 属性来消除加粗效果,但是一些特定的设备可能无法消除这种效果。
如果更换自定义字体并不是一个选项,你可以尝试以下方法来解决问题:
1、设置字体大小:适当增加字体大小可能会帮助减轻加粗的效果,在保持可读性的同时提高文字清晰度。
2、使用不同的字体系列:有些字体家族中的特定字体看起来可能比其他字体更容易受到加粗效果的影响。因此,您可以尝试在不同的字体系列中寻找合适的字体,以确保正常显示。
3、查看设备设置和强制确定:某些 Android 设备具有特定的文本处理设置或 zoom 等级,这些可能会影响字体的显示效果。您可以查看设备的文本、字体和显示设置,并将其重置为默认值。此外,可以尝试使用MediaQueryData.textScaleFactorOf(context) 获取当前的文字缩放,然后将要呈现的字体大小进行相应调整,使其在特定的设备上保持不变。
请注意,以上方法可能并不能完全解决该问题,在某些情况下仍需要使用自定义字体以确保显示正常。
为啥不用自定义的字体呀?你更新你的Flutter和Android SDK版本,官方有解决方案可以试试的,
使用较新的Flutter版本(1.21.2或更高版本)和Android 13 SDK支持的自定义字体库(例如https://fonts.google.com/specimen/Noto+Serif+SC%E3%80%82
使用系统字体会有问题么,有些系统字体在安卓13上能正常显示,不过需要对设备兼容性进行测试。
可以借鉴下
Text(
"按科室问医生 normal",
style: TextStyle(
fontSize: 24,
color: Color(0xff333333),
),
),
Text(
"按科室问医生 medium",
style: TextStyle(
fontSize: 24,
color: Color(0xff333333),
fontWeight: FontWeight.w500,
),
),
Text(
"按科室问医生 bold",
style: TextStyle(
fontSize: 24,
color: Color(0xff333333),
fontWeight: FontWeight.bold,
),
)
可以借鉴下
加粗
_buildTitle() {
return Text(
"温馨提示",
style: TextStyle(fontWeight: FontWeight.bold),
);
}
试试下面的方法:
在Flutter应用中,可以使用Google提供的Roboto字体,这是一款针对移动端优化的字体,支持各种语言和字体大小,可以通过TextTheme
来设置应用程序中的默认字体。
可以在MaterialApp
的构造函数中设置theme
属性来指定默认字体和风格。例如:
MaterialApp(
theme: ThemeData(
fontFamily: 'Roboto',
textTheme: TextTheme(
bodyText1: TextStyle(fontSize: 16.0, fontWeight: FontWeight.normal),
bodyText2: TextStyle(fontSize: 14.0, fontWeight: FontWeight.normal),
),
),
)
如果必须使用自定义字体,可以尝试将字体文件重命名,使其带有“Regular”字样,以确保在应用程序中使用正常的字体加粗设置。
如果设置 FontWeight.normal 仍无法解决问题,你可以尝试通过设置字体样式来解决。在 Flutter 中,可以通过 TextStyle 类来设置字体样式,例如:
TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
fontStyle: FontStyle.normal,
fontFamily: 'system'
)
其中,fontFamily 可以设置为系统默认字体,比如 'system' 或 'sans-serif'。如果依然存在问题,可能是因为设备的 DPI 不同导致的渲染问题,可以尝试通过设置 TextScaleFactor 来解决,例如:
DefaultTextStyle(
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
fontStyle: FontStyle.normal,
fontFamily: 'system'
),
child: Text(
'Hello world',
textScaleFactor: 1.0 // 设置缩放比例
)
)
通过调整 TextScaleFactor 的值来适配不同的 DPI。
在安卓13设备上出现字体加粗的问题可能是由于设备系统默认启用了字体加粗的功能,可以尝试通过以下几种方法解决:
尝试设置字体的fontStyle属性为FontStyle.normal,如下所示:
复制
Text(
'Hello World',
style: TextStyle(
fontWeight: FontWeight.normal,
fontStyle: FontStyle.normal,
),
);
使用系统自带字体,因为系统自带字体通常都已经适配了系统的字体加粗功能,可以尝试使用如下代码:
复制
Text(
'Hello World',
style: TextStyle(
fontWeight: FontWeight.normal,
fontFamily: 'sans-serif',
),
);
其中'sans-serif'是安卓系统默认的字体。
禁用系统字体加粗功能,可以通过在应用的主题中设置textStyle的allowFontScaling属性为false来实现。如下所示:
复制
MaterialApp(
theme: ThemeData(
textTheme: TextTheme(
bodyText1: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.normal,
allowFontScaling: false,
),
),
),
home: MyHomePage(),
);
这样就可以禁用字体加粗功能了。
希望这些方法能够帮助你解决问题。
如果您在 Flutter 应用程序中使用的字体在 Android 13 设备上显示为加粗,即使设置了 FontWeight.normal,可以尝试下面的步骤来解决这个问题:
确认问题:首先,请确认该问题是否确实与 Android 13 设备有关。您可以尝试将应用程序安装在其他设备上,查看它们是否显示相同的问题。
更新 Flutter 版本:如果您使用的是过时的 Flutter 版本,则可能在一些操作系统版本上出现兼容性问题。请确保您正在使用最新版本的 Flutter。
检查默认字体样式:打开 Android 设备的设置并导航到“显示”选项。检查默认字体样式是否被更改为加粗。如果是,请将其更改回标准样式。
使用外部字体:如果您不想更改应用程序的字体样式,并且不想更改默认字体设置,则可以考虑使用外部字体。例如,您可以从 Google Fonts 网站下载合适的字体,然后将其添加到您的 Flutter 应用程序中。这样,您就可以针对移动设备使用不同的字体,以确保应用程序在各种设备上都具有一致的外观。
如果上述操作无效,您可以尝试反编译应用程序并查找原因。或者您可以联系 Flutter 开发社区或 Google 支持寻求进一步帮助。
你这个问题应该可以解决,我给你提供几个解决方案。如果对你有帮助,帮忙给个关注和解决。哈哈谢谢了
在Android 12及以上版本中,系统默认启用了“Dynamic Font”功能,该功能会对部分字体进行加粗处理,导致一些本来不加粗的字体在某些情况下也被加粗了。这个问题可以通过在Flutter应用程序中设置forceStrutHeight参数来解决。
forceStrutHeight是一个Bool类型的参数,如果将其设置为true,则会强制使用strut高度来布局文本,从而避免字体加粗的问题。在Text widget中设置该参数即可,示例如下:
Text(
'Hello, World!',
style: TextStyle(
fontWeight: FontWeight.normal,
fontSize: 16.0,
),
// 强制使用strut高度来布局文本
// 从而避免字体加粗的问题
forceStrutHeight: true,
)
除了设置forceStrutHeight参数,还可以使用Flutter的Google Fonts插件来加载自定义字体,从而避免系统字体加粗的问题。Google Fonts插件提供了数百种开源字体,可以通过简单的配置即可在Flutter应用程序中使用。示例代码如下:
dependencies:
google_fonts: ^2.1.0
import 'package:google_fonts/google_fonts.dart';
Text(
'Hello, World!',
style: GoogleFonts.sourceSansPro(
fontWeight: FontWeight.normal,
fontSize: 16.0,
),
)
使用Google Fonts插件中的sourceSansPro字体,并设置了字体的大小和粗细。通过这种方式加载字体,可以避免系统字体加粗的问题,同时也可以使用更多的字体选择来满足不同的需求。
答案由GPT-4Plus大模型(语音)与博主@晓码自在合作编写:
在Android 13上,Flutter应用的字体被默认加粗,这是因为Android 13启用了“强制字体加粗”的功能。要解决这个问题,有以下几种方法:
xml
<uses-font-family fontFamily="serif" />
这会告诉 Android 使用非加粗的字体渲染 Flutter 应用。
yaml
flutter:
android:
defaultConfig:
permission:
- android.permission.READ_EXTERNAL_STORAGE
plist:
UiMode: "normal"
dart
import 'package:flutter/services.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
));
// 关闭字体加粗
SystemChrome.setEnabledSystemUIMode(SystemUiMode.normal, overlays: []);
runApp(MyApp());
}
yaml
fonts:
- family: MyFont
fonts:
- asset: assets/fonts/myfont.ttf
dart
Text(
'Hello',
style: TextStyle(fontFamily: 'MyFont'),
)
以上几种方法都可以解决在Android 13上Flutter应用字体被加粗的问题。首选的方法是在 pubspec.yaml 文件中添加配置排除这个功能,其次是在启动时动态关闭,最后可以考虑使用自定义字体替代默认字体。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
安卓13设备出现字体加粗的问题可能是因为系统默认启用了字体加粗选项。可以尝试通过设置 TextStyle 的 fontWeight 属性来解决这个问题。以下是一个简单的示例代码:
Text(
"Hello, World!",
style: TextStyle(
fontWeight: FontWeight.w400, // 设置字体粗细
),
),
在这个示例中,FontWeight.w400
表示正常的字体粗细,如果设置为 FontWeight.bold
则会加粗字体。如果设置字体粗细不生效,还可以尝试在文本所在的父级容器中设置以下属性:
DefaultTextStyle(
style: TextStyle(
fontWeight: FontWeight.w400, // 设置全局字体粗细程度
),
child: Text("Hello, World!"),
)
在这个示例中,通过 DefaultTextStyle
组件可以将字体粗细程度设置为全局,这样子容器中所有子组件的字体粗细都会继承这个值,而不需要为每个组件都设置一遍字体粗细。
如果这些方法都无法解决你的问题,那么可能需要检查你的 Flutter 安装是否正确或者尝试升级 Flutter 版本。
如果我的回答解决了您的问题,请采纳!