gpt4 book ai didi

android - flutter 行间隔因语言而异

转载 作者:行者123 更新时间:2023-12-05 00:11:16 32 4
gpt4 key购买 nike

如何通过 Text 强制 Flutter 遵守给定的行间隔小部件?

我注意到,根据语言的间隔可能会有所不同,这使得小部件的高度不可预测。例如,在阿拉伯语中间隔更大。

我比较了 Flutter 和 Android,发现 Android 的 TextView以相同的行间隔渲染阿拉伯文本(它也会自动从右到左渲染,而 Flutter 不会,这也是可疑的)。

例子。

flutter
enter image description here
安卓
enter image description here

flutter 代码

class IneterlineExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
final style = TextStyle(
fontSize: 32.0,
height: 1.0,
);
return Scaffold(
appBar: AppBar(
title: Text('Interline example'),

),
body: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: 200.0,
child: Text("This is a multiline text with English letters",
maxLines: 4,
overflow: TextOverflow.ellipsis,
style: style,
),
),
Container(
width: 200.0,
child: Text("آموزش کامل طرز تهیه پودینگ شکلاتی موز دسر مجلسی",
maxLines: 4,
overflow: TextOverflow.ellipsis,
style: style,
),
),
Container(
width: 200.0,
child: Text("В русском языке интервалы тоже ок Russian",
maxLines: 4,
overflow: TextOverflow.ellipsis,
style: style,
),
),
],
));
}
}

安卓代码
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ExampleActivity">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
>
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="This is a multiline text with English letters"
android:textSize="32dp"
android:maxLines="4"
android:ellipsize="end"
/>
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="آموزش کامل طرز تهیه پودینگ شکلاتی موز دسر مجلسی"
android:textSize="32dp"
android:maxLines="4"
android:ellipsize="end"
/>
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="В русском языке интервалы тоже ок Russian"
android:textSize="32dp"
android:maxLines="4"
android:ellipsize="end"
/>

</LinearLayout>


</android.support.constraint.ConstraintLayout>

我要解决的原始问题是将某些文本(语言未知)适合给定的高度。

即我有一些文本,可能很长和一个框,WxH 固定大小。给定我的字体大小和 height比例尺,我可以装 L文本行。所以我把 maxLinesellipsize它适用于 Android 应用程序(因为行高是可预测的),但不适用于 Flutter 应用程序。
如果 Flutter 文本在溢出给定框时可以被省略,我也可以,但不知道如何实现。

最佳答案

我也在 github 上发布了这个问题:
https://github.com/flutter/flutter/issues/23875

现在它已修复( https://github.com/flutter/flutter/commit/c6cc3cdedafee41822ce832d7d73000f2e77b183 ),解决方案是使用 strutStyle Text 的属性(property)

Text("Some Arabic text",
strutStyle: StrutStyle(
fontFamily: 'FontName',
forceStrutHeight: true,
),
)

https://docs.flutter.io/flutter/painting/StrutStyle/forceStrutHeight.html

关于android - flutter 行间隔因语言而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121224/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com