我想实现自动调整文本大小的方法,以获得更好的兼容性。
我关注了这篇文章:
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 Emulator中,我看不到完整的文本,但它被剪切了。
感谢猫王
发布于 2020-08-22 19:46:00
我使用ssp和sdp。ssp是android SDK的文本可扩展大小单位,它提供了一个新的大小单位- ssp (scalable sp)。此大小单位与基于sp大小单位(用于文本)的屏幕大小一起缩放。它可以帮助安卓开发人员支持多个screens.and sdp,这是sdp大小单位的兄弟,应该用于非文本视图。https://github.com/intuit/ssp和https://github.com/intuit/sdp使用gradle并编译如下所示的库
implementation 'com.intuit.sdp:sdp-android:1.0.4'
implementation 'com.intuit.ssp:ssp-android:1.0.4'在您的布局活动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"/>发布于 2020-08-22 20:14:54
为了在旧设备上保持兼容性,最好使用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" />发布于 2020-08-22 19:54:34
您可以使用这个:android:autoSizeMaxTextSize="",但这需要API26,如果不是这样,您可以用app替换android
在API 26以下的情况下,您可以使用以下适用于我的方法:
app:autoSizeMaxTextSize="100sp"
app:autoSizeMinTextSize="2sp"
app:autoSizeStepGranularity="2sp"
app:autoSizeTextType="uniform"将这些值替换为所需的值
https://stackoverflow.com/questions/63535739
复制相似问题