gpt4 book ai didi

android - Ellipsize 对于具有任意最大高度的多行 TextView 无法正常工作

转载 作者:IT王子 更新时间:2023-10-28 23:36:38 33 4
gpt4 key购买 nike

我有一个最大高度未知的 TextView,这取决于设备的 DPI/屏幕分辨率。因此,例如,在 MDPI 设备上,这个最大高度使得一次只能显示 2 行成为可能,这个值可以增加到一个未定义的数字。

我的问题与 ellipsize 功能有关。假设某个设备允许显示 4 行。如果我手动设置最大行数,像这样...

<TextView
android:id="@+id/some_id"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:ellipsize="end"
android:maxLines="4"
android:singleLine="false"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="This is some really really really really really long text"
android:textSize="15sp" />

...一切正常。如果文本不合适,则在第四行末尾添加省略号,如下所示:

This is some
really really
really really
really long...

但我宁愿将行数设置为静态变量,因为我更愿意支持 DPI/屏幕分辨率的任意组合。因此,如果我删除 maxLines 省略号将不再正确显示在第四行,而是显示不完整的文本部分:

This is some
really really
really really
really long

如果我稍微增加 TextView 的大小,我可以看到其余的文本仍在其他 Views 的“后面”绘制。设置变量 maxHeight 似乎也不起作用。

我似乎真的找不到这个问题的解决方案。有任何想法吗?如果有帮助,我只使用 Android v4.0.3 及更高版本(API 级别 15)。

最佳答案

使用 TextView#getHeight()TextView#getLineHeight() 计算 TextView 中有多少行。然后调用 TextView#setMaxLines()

ViewTreeObserver observer = textView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int maxLines = (int) textView.getHeight()
/ textView.getLineHeight();
textView.setMaxLines(maxLines);
textView.getViewTreeObserver().removeGlobalOnLayoutListener(
this);
}
});

关于android - Ellipsize 对于具有任意最大高度的多行 TextView 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173776/

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