gpt4 book ai didi

android - 使 TextView 适合 Android 上的布局

转载 作者:搜寻专家 更新时间:2023-11-01 09:00:48 25 4
gpt4 key购买 nike

我有一个方形的 FrameLayout。我在布局中有一个 TextView 和一个供用户增加/减少 textSize 的选项。当文本大到足以填满整个 FrameLayout 时,我想限制文本增加选项。因此,如果我从 25sp 开始,当用户达到 40sp 并且 TextView 高度超过 FrameLayout 高度时,我需要恢复到 39sp 并禁止进一步增加文本大小。 TextView 的来源是一个 spannable。

到目前为止,我是这样做的。

在增加按钮上,我为每个可跨越的 fragment 简单地 setTextSize(currentValue + 1)

因为当我再次设置文本时我不知道我的 TextView 的“真实”大小,所以我使用了

ViewTreeObserver vto = textView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//here I have the real sizes of the textView and if the height is too big, I simply
setTextSize(currentValue - 1)
}

缺点是增加文本的可见操作 -> 再次减少它。因此,用户会在大约 100 毫秒的时间内看到文本变大然后恢复原状。有没有一种处理此计算的好方法,这样我就可以避免实际增加文本大小?

最佳答案

我建议在实际更改大小之前使用 TextPaint 和跨度类来测量文本。测量文本需要将其拆分为跨度。然后,您应该将跨度应用到 TextPaint 对象并向它询问文本 block 尺寸。

http://developer.android.com/reference/android/text/TextPaint.html http://developer.android.com/reference/android/graphics/Paint.FontMetrics.html http://developer.android.com/reference/android/text/style/CharacterStyle.html

任务相当复杂,如有任何问题,请随时寻求更多帮助。我用来测量文本的代码很长而且没有注释,所以我可能会把它发布到谷歌代码以备不时之需。

关于android - 使 TextView 适合 Android 上的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15087110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com