0

在我的应用程序中,我显示了几个文本视图,其中包含在运行时加载的各种长度的文本。直到运行时我才知道文本视图的尺寸或文本的长度。有时,当文本很长而文本视图很小时,一些文本是部分可见的,例如:

在此处输入图像描述

我想删除部分可见的文本,因为它看起来有点糟糕,但我找不到这样做的方法。任何帮助,将不胜感激!

谢谢,

戴夫

4

3 回答 3

0

我就是这样做的。我通过将方法 CheckTextIsVisible 发布到父 relativelayout 的处理程序队列来加载活动后运行此代码,否则将不知道文本视图的高度:

m_eventsLayout.Post(new Action(CheckTextIsVisible));

然后 CheckTextIsVisible 方法找到每个包含文本的 textview,计算字体的高度,计算出 textview 可以容纳多少行,并相应地设置最大行数:

    private void CheckTextIsVisible()
    {
        View view;
        TextView tView;
        Android.Text.TextPaint tPaint;
        float height;
        int heightOfTextView;
        int noLinesInTextView;
        for (int i = 0; i < m_eventsLayout.ChildCount; i++)
        {
            view = m_eventsLayout.GetChildAt(i);

            if (view is TextView)
            {
                tView = (TextView)view;
                if (tView.Text != "")
                {         
                    //calculate font height
                    tPaint = tView.Paint;
                    height = CalculateTextHeight(tPaint.GetFontMetrics());
                    //calculate the no of lines that will fit in the text box based on this height
                    heightOfTextView = tView.Height;
                    noLinesInTextView = (int)(heightOfTextView / height);
                    //set max lines to this
                    tView.SetMaxLines(noLinesInTextView);
                }
            }
        }
    }

    private float CalculateTextHeight(Android.Graphics.Paint.FontMetrics fm)
    {
        return fm.Bottom - fm.Top;
    }

这导致没有部分可见的文本!

于 2013-03-28T16:08:38.273 回答
0

您可以硬编码TextView高度,使第二行文本不可见。

或使用:

android:maxLines , Makes the TextView be at most this many lines tall. 

如上所述。

于 2013-03-27T11:29:51.770 回答
0

将您的文本视图放在滚动视图布局中。并为您的文本视图指定一个特定的宽度并使高度包裹内容。这样您的文本就不会被剪切。

于 2013-03-27T11:31:48.867 回答