Android 不同语言的文字高度不同

Android Text in different language take different height

我们正在我们的应用程序中显示一些文本(比如 RecyclerViewGridLayoutManager)。此文本以不同语言显示,如下图突出显示。因此,TextView 的高度因不同的语言字体采用不同的间距而不同。 请参考下面的示例图片和绘制文本视图所需的代码。

  <com.google.android.material.textview.MaterialTextView
            android:id="@+id/tv_title_one"
            android:layout_width="0dp"
            app:layout_constraintWidth_percent="0.5"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="10dp"
            android:fontFamily="@font/lato_bold"
            android:gravity="start"
            android:maxLines="3"
            android:minLines="1"
            android:singleLine="false"
            android:includeFontPadding="false"
            android:textColor="#541388"
            android:letterSpacing="0"
            android:lineSpacingExtra="0dp"
            android:textSize="32sp"
            android:textStyle="normal"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:text="Class 12th (Biology) 2021 - 2022" />


具有两个相似文本视图但语言不同的虚拟布局

如果问题描述中有任何遗漏,请告诉我。感谢您提出宝贵意见。


更新 #1: 因为没有直接的答案。我们将按照已接受的答案中的说明对卡片高度和文本高度进行限制。

我只是认为原因可能来自您在这台电视中尝试用于渲染文本的字体。对于每种语言,由于语言规范的原因,字符大小在宽度和高度之间可能会有所不同。

您能否尝试使用默认系统字体来检查您是否仍然存在间距问题?

或者另一个建议是:

  • 使用 autoSizeMaxTextSizeautoSizeMinTextSize 功能允许自动调整文本大小以尽可能修复 textview
  • 为您的文本内容应用固定高度和额外的垂直 Space,并根据需要添加 android:ellipsize

还在想:

  • 您的应用是否在 UI 上同时显示多种语言?