如何在 Android Studio 上缩放文本大小以实现多设备兼容性?
How do I scale my text size for multi-device compatibility on Android Studio?
我无法根据用户的设备缩放文本大小。我使用约束布局来约束 TextView。我发现 autoTextSize 可用于自动使我的文本适合 TextView。然而,当我 运行 我的代码在像 BlueStacks 这样的模拟器上时,一些文本没有正确缩放。奇怪的是,有些工作但有些没有,即使我以相同的方式实现它。
这是它的外观示例:注册按钮是大字体,但其他文本不是
这是我的布局编辑器的样子:
我的注册按钮代码:
<TextView
android:id="@+id/register"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="REGISTER"
app:autoSizeTextType="uniform"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="5:1"
app:layout_constraintEnd_toEndOf="@id/guideline3"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@id/guideline2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.541" />
我的“最多 8 个字符”文本代码。
<TextView
android:id="@+id/req"
android:layout_width="0dp"
android:layout_height="0dp"
android:autoSizeTextType="uniform"
android:text="*up to 8 characters"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="7:1"
app:layout_constraintEnd_toEndOf="@+id/guideline5"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/guideline4"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.538" />
我是否以某种方式滥用了 autoSizeTextType?
此外,我的“输入用户名”文本非常小。我使用 EditText 并以与其他两个文本相同的方式实现它。如果无论如何我可以将字体大小调大以适合布局大小,请告诉我。
您的 <TextView android:id="@+id/register"
使用 app:autoSizeTextType="uniform"
属性,<TextView android:id="@+id/req"
使用 android:autoSizeTextType="uniform"
- 注意区别 app
/android
。尝试合并此参数,您可能应该在 both/all TextView
s
中使用 app
请注意 setAutoSizeTextTypeWithDefaults
是在 API 26 中引入的,因此当您使用 android:
前缀时,此属性将仅在 26+ 上受到尊重。使用自定义 app:
使此属性可用于任何 OS 版本
上的 TextView
(实际上是 TextViewCompat
)
在布局预览上方的 Android Studio 中,您可以选择切换“要预览的设备”以及 API 版本 - 尝试更改为较旧的版本(在此示例中最多 25,最好支持的最低 minSdkVersion
) 或最新的 OS 版本,IDE 应该在外观上捕捉并显示差异
像这样使用 TextView 参数
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeStepGranularity="2sp"
您可以查看 official documentation 了解更多信息。
我无法根据用户的设备缩放文本大小。我使用约束布局来约束 TextView。我发现 autoTextSize 可用于自动使我的文本适合 TextView。然而,当我 运行 我的代码在像 BlueStacks 这样的模拟器上时,一些文本没有正确缩放。奇怪的是,有些工作但有些没有,即使我以相同的方式实现它。
这是它的外观示例:注册按钮是大字体,但其他文本不是
我的注册按钮代码:
<TextView
android:id="@+id/register"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="REGISTER"
app:autoSizeTextType="uniform"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="5:1"
app:layout_constraintEnd_toEndOf="@id/guideline3"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@id/guideline2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.541" />
我的“最多 8 个字符”文本代码。
<TextView
android:id="@+id/req"
android:layout_width="0dp"
android:layout_height="0dp"
android:autoSizeTextType="uniform"
android:text="*up to 8 characters"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="7:1"
app:layout_constraintEnd_toEndOf="@+id/guideline5"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/guideline4"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.538" />
我是否以某种方式滥用了 autoSizeTextType?
此外,我的“输入用户名”文本非常小。我使用 EditText 并以与其他两个文本相同的方式实现它。如果无论如何我可以将字体大小调大以适合布局大小,请告诉我。
您的 <TextView android:id="@+id/register"
使用 app:autoSizeTextType="uniform"
属性,<TextView android:id="@+id/req"
使用 android:autoSizeTextType="uniform"
- 注意区别 app
/android
。尝试合并此参数,您可能应该在 both/all TextView
s
app
请注意 setAutoSizeTextTypeWithDefaults
是在 API 26 中引入的,因此当您使用 android:
前缀时,此属性将仅在 26+ 上受到尊重。使用自定义 app:
使此属性可用于任何 OS 版本
TextView
(实际上是 TextViewCompat
)
在布局预览上方的 Android Studio 中,您可以选择切换“要预览的设备”以及 API 版本 - 尝试更改为较旧的版本(在此示例中最多 25,最好支持的最低 minSdkVersion
) 或最新的 OS 版本,IDE 应该在外观上捕捉并显示差异
像这样使用 TextView 参数
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeStepGranularity="2sp"
您可以查看 official documentation 了解更多信息。