提问人:tycoon 提问时间:8/2/2022 更新时间:8/2/2022 访问量:69
HorizontalScrollView 在 Android 中使用 AutoSize textView
HorizontalScrollView with AutoSize textView in Android
问:
我想创建一个布局,其中 textview 会自动调整其中的文本大小,但在达到最小尺寸后,它应该开始滚动,就像在谷歌计算器中一样。像这样的东西。
在填充整个宽度后,只需将 TextView 放在 HorizontalScrollView 中,它不会减小文本的大小。上图文本视图
我的代码:
<HorizontalScrollView
android:id="@+id/scroll"
android:background="@color/nHistoryBg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"
android:layout_gravity="end"
android:layout_weight="4"
>
<TextView
android:id="@+id/tvHistory"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center_vertical|end"
android:textStyle="bold"
android:maxLines="1"
android:paddingStart="10dp"
android:paddingEnd="20dp"
android:autoSizeMinTextSize="@dimen/histMinSz"
android:autoSizeMaxTextSize="@dimen/histMaxSz"
android:autoSizeTextType="uniform"
/>
</HorizontalScrollView>
答:
0赞
Kishan Mevada
8/2/2022
#1
设置 TextView 自动调整大小
您可以使用框架或支持库以编程方式或在 .要设置属性,您还可以使用 Android Studio 中的 Properties 窗口。TextView
XML
XML
有三种方法可以设置自动调整大小:TextView
- 违约
- 粒度
- 预设尺寸
违约
默认设置允许在水平轴和垂直轴上均匀地自动调整缩放大小。TextView
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform" />
粒度
您可以定义最小和最大文本大小的范围,以及指定每个步骤大小的尺寸。在最小和最大大小属性之间的范围内均匀缩放。每个增量都按照粒度属性中设置的步长进行。TextView
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeStepGranularity="2sp" />
预设尺寸
预设大小允许您指定在自动调整文本大小时选取的所有值。TextView
将属性设置为“无”或“统一”。None 是默认值,uniform 允许在水平轴和垂直轴上均匀缩放。autoSizeText
TextView
将属性设置为预设大小的数组。若要将数组作为资源进行访问,请在文件中定义数组。autoSizePresetSizes
res/values/arrays.xml
<resources>
<array name="autosize_text_sizes">
<item>10sp</item>
<item>12sp</item>
<item>20sp</item>
<item>40sp</item>
<item>100sp</item>
</array>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform"
android:autoSizePresetSizes="@array/autosize_text_sizes" />
更多细节,可以关注谷歌官方文档。Autosizing TextViews
评论
0赞
tycoon
8/2/2022
不,问题不在于调整 textView 的大小,正如您在第二个 gif 中看到的那样,我有一个不在 HorizontalScrollView 中的 textView,可以调整其文本大小。问题是关于调整 HorizontalScrollView 中的文本大小,正如您在谷歌计算器的第一个动画中看到的那样
评论
android:layout_width
wrap_content