在我的应用程序中,我需要myTextView中的文本显示单行,而最后没有三个点。当它太长时,我需要显示一些不同格式的文本,所以像设置maxHeight这样的东西将无济于事,因为它只会产生它。
我的方法是检查TextView有多少行,并且如果文本超过1则使文本更短。这正是我想要的方法,但由于必须首先绘制View才能检查LineCount,在将文本切割为一行之前,线条布局会短暂闪烁:
myTextView.Post(() =>
{
if (myTextView.LineCount > 1)
{
// make text shorter here to fit 1 line
}
});
所以我的问题是,有没有办法检查View 之前有多少行显示给用户?我可以根据字符串中的字符数来强制它,但这似乎是错误的。
答案 0 :(得分:1)
首先,将TextView Visibility设置为Invisible,以便占用其空间然后填充它。
您可以使用一种方法来获取行数。
TextView txt = (TextView)findViewById(R.id.txt);
txt.getLineCount();
这将返回" int"。 在textChangedListener中使用该int来使用TextView的可见性。
这样你就会知道TextView有多少换行符。
干杯。
答案 1 :(得分:0)
所以我找到了适合我的解决方案。它需要获取屏幕宽度,计算TextView的宽度和检查文本长度,dp中的所有内容。所以:
Layer (type) Output Shape Param #
=================================================================
reshape_3 (Reshape) (None, 1, 15) 0
_________________________________________________________________
flatten_2 (Flatten) (None, 15) 0
_________________________________________________________________
embedding_2 (Embedding) (None, 5, 30) 600
_________________________________________________________________
dropout_2 (Dropout) (None, 5, 30) 0
_________________________________________________________________
conv1d_2 (Conv1D) (None, 5, 30) 2730
=================================================================
现在看看它是非常简单的方法,但我会把它留在这里,也许有人会发现它很有用。