首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在安卓系统中让TextView自动调整大小?

如何在安卓系统中让TextView自动调整大小?
EN

Stack Overflow用户
提问于 2020-08-22 19:39:34
回答 3查看 347关注 0票数 0

我想实现自动调整文本大小的方法,以获得更好的兼容性。

我关注了这篇文章:

https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview

我写了这段代码:

代码语言:javascript
复制
<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中,我看不到完整的文本,但它被剪切了。

感谢猫王

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-22 19:46:00

我使用ssp和sdp。ssp是android SDK的文本可扩展大小单位,它提供了一个新的大小单位- ssp (scalable sp)。此大小单位与基于sp大小单位(用于文本)的屏幕大小一起缩放。它可以帮助安卓开发人员支持多个screens.and sdp,这是sdp大小单位的兄弟,应该用于非文本视图。https://github.com/intuit/ssphttps://github.com/intuit/sdp使用gradle并编译如下所示的库

代码语言:javascript
复制
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文件的示例,如下所示

代码语言:javascript
复制
<TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Intuit"
                android:textColor="@android:color/black"
                android:textSize="@dimen/_40ssp"/>
票数 1
EN

Stack Overflow用户

发布于 2020-08-22 20:14:54

为了在旧设备上保持兼容性,最好使用androidx.appcompat.widget.AppCompatTextView而不是TextView

我猜问题出在android:autoSizeTextType="none",而不应该是none。而且,以一种简单的方式,不需要定义app:autoSizePresetSizes,让文本视图自己计算合适的大小。

代码语言:javascript
复制
<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" />
票数 0
EN

Stack Overflow用户

发布于 2020-08-22 19:54:34

您可以使用这个:android:autoSizeMaxTextSize="",但这需要API26,如果不是这样,您可以用app替换android

在API 26以下的情况下,您可以使用以下适用于我的方法:

代码语言:javascript
复制
app:autoSizeMaxTextSize="100sp"
    app:autoSizeMinTextSize="2sp"
    app:autoSizeStepGranularity="2sp"
    app:autoSizeTextType="uniform"

将这些值替换为所需的值

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63535739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档