如何让 TextView 在 android 中自动调整大小?
How can I make TextView auto-size in android?
我想实现自动调整文本大小的方法以获得更好的兼容性。
我关注了这篇文章:
https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview
我写了这段代码:
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoSizeMaxTextSize="100sp"
android:autoSizeMinTextSize="12sp"
android:autoSizeStepGranularity="2sp"
android:autoSizeTextType="none"
android:fontFamily="@font/arimo"
android:text="Ti piace Youtube?"
android:textAlignment="viewStart"
android:textAllCaps="false"
android:textColor="#F8F3F3"
android:textSize="20sp"
android:textStyle="bold"
app:autoSizePresetSizes="@array/autosize_text_sizes" />
我哪里错了?文本不会自动调整大小,例如,在 Nexus S 模拟器中,我看不到完整的文本,但它被剪切了。
谢谢
猫王
我使用 ssp 和 sdp。 ssp 文本的可缩放大小单位是 android SDK,它提供了一个新的大小单位 - ssp(可缩放 sp)。此尺寸单位根据 sp 尺寸单位(用于文本)随屏幕尺寸缩放。它可以帮助 Android 开发人员支持多个 screens.and sdp 这是应该用于非文本视图的 sdp 大小单位的兄弟。 https://github.com/intuit/ssp and https://github.com/intuit/sdp 使用 gradle 并像下面这样编译库
implementation 'com.intuit.sdp:sdp-android:1.0.4'
implementation 'com.intuit.ssp:ssp-android:1.0.4'
在您的布局中 activity xml 例如,您可以像这样提供文本
android:textSize="@dimen/_16ssp"
对于布局
android:layout_height="@dimen/_16sdp"
这将照顾到任何屏幕享受。
对于纯文本,在 gradle 文件上添加 implementation 'com.intuit.ssp:ssp-android:1.0.4'
然后
这是 TextView 中 xml 文件的示例,如下所示
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Intuit"
android:textColor="@android:color/black"
android:textSize="@dimen/_40ssp"/>
你可以使用这个:android:autoSizeMaxTextSize=""
但这需要 api 26,如果不是这样你可以用 app
替换 android
小于 API 26,您可以使用以下对我有用的方法:
app:autoSizeMaxTextSize="100sp"
app:autoSizeMinTextSize="2sp"
app:autoSizeStepGranularity="2sp"
app:autoSizeTextType="uniform"
用您想要的值替换值
最好使用 androidx.appcompat.widget.AppCompatTextView
而不是 TextView
以兼容旧设备。
我猜问题出在android:autoSizeTextType="none"
,应该不是none
。另外,简单的说,不需要定义app:autoSizePresetSizes
,让文本视图自己计算合适的大小。
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/arimo"
android:text="Ti piace Youtube?"
android:textAlignment="viewStart"
android:textAllCaps="false"
android:textColor="#F8F3F3"
android:textSize="20sp"
android:textStyle="bold"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="1sp" />
我想实现自动调整文本大小的方法以获得更好的兼容性。
我关注了这篇文章:
https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview
我写了这段代码:
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoSizeMaxTextSize="100sp"
android:autoSizeMinTextSize="12sp"
android:autoSizeStepGranularity="2sp"
android:autoSizeTextType="none"
android:fontFamily="@font/arimo"
android:text="Ti piace Youtube?"
android:textAlignment="viewStart"
android:textAllCaps="false"
android:textColor="#F8F3F3"
android:textSize="20sp"
android:textStyle="bold"
app:autoSizePresetSizes="@array/autosize_text_sizes" />
我哪里错了?文本不会自动调整大小,例如,在 Nexus S 模拟器中,我看不到完整的文本,但它被剪切了。
谢谢 猫王
我使用 ssp 和 sdp。 ssp 文本的可缩放大小单位是 android SDK,它提供了一个新的大小单位 - ssp(可缩放 sp)。此尺寸单位根据 sp 尺寸单位(用于文本)随屏幕尺寸缩放。它可以帮助 Android 开发人员支持多个 screens.and sdp 这是应该用于非文本视图的 sdp 大小单位的兄弟。 https://github.com/intuit/ssp and https://github.com/intuit/sdp 使用 gradle 并像下面这样编译库
implementation 'com.intuit.sdp:sdp-android:1.0.4'
implementation 'com.intuit.ssp:ssp-android:1.0.4'
在您的布局中 activity xml 例如,您可以像这样提供文本
android:textSize="@dimen/_16ssp" 对于布局
android:layout_height="@dimen/_16sdp" 这将照顾到任何屏幕享受。
对于纯文本,在 gradle 文件上添加 implementation 'com.intuit.ssp:ssp-android:1.0.4'
然后
这是 TextView 中 xml 文件的示例,如下所示
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Intuit"
android:textColor="@android:color/black"
android:textSize="@dimen/_40ssp"/>
你可以使用这个:android:autoSizeMaxTextSize=""
但这需要 api 26,如果不是这样你可以用 app
android
小于 API 26,您可以使用以下对我有用的方法:
app:autoSizeMaxTextSize="100sp"
app:autoSizeMinTextSize="2sp"
app:autoSizeStepGranularity="2sp"
app:autoSizeTextType="uniform"
用您想要的值替换值
最好使用 androidx.appcompat.widget.AppCompatTextView
而不是 TextView
以兼容旧设备。
我猜问题出在android:autoSizeTextType="none"
,应该不是none
。另外,简单的说,不需要定义app:autoSizePresetSizes
,让文本视图自己计算合适的大小。
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/arimo"
android:text="Ti piace Youtube?"
android:textAlignment="viewStart"
android:textAllCaps="false"
android:textColor="#F8F3F3"
android:textSize="20sp"
android:textStyle="bold"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="1sp" />