检查TextView在显示之前将有多少行

时间:2017-10-06 12:43:54

标签: c# android layout

在我的应用程序中,我需要myTextView中的文本显示单行,而最后没有三个点。当它太长时,我需要显示一些不同格式的文本,所以像设置maxHeight这样的东西将无济于事,因为它只会产生它。

我的方法是检查TextView有多少行,并且如果文本超过1则使文本更短。这正是我想要的方法,但由于必须首先绘制View才能检查LineCount,在将文本切割为一行之前,线条布局会短暂闪烁:

myTextView.Post(() =>
    {
        if (myTextView.LineCount > 1)
        {
            // make text shorter here to fit 1 line
        }
    });

所以我的问题是,有没有办法检查View 之前有多少行显示给用户?我可以根据字符串中的字符数来强制它,但这似乎是错误的。

2 个答案:

答案 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      
=================================================================

现在看看它是非常简单的方法,但我会把它留在这里,也许有人会发现它很有用。