在我的应用程序中,我显示了几个文本视图,其中包含在运行时加载的各种长度的文本。直到运行时我才知道文本视图的尺寸或文本的长度。有时,当文本很长而文本视图很小时,一些文本是部分可见的,例如:
我想删除部分可见的文本,因为它看起来有点糟糕,但我找不到这样做的方法。任何帮助,将不胜感激!
谢谢,
戴夫
在我的应用程序中,我显示了几个文本视图,其中包含在运行时加载的各种长度的文本。直到运行时我才知道文本视图的尺寸或文本的长度。有时,当文本很长而文本视图很小时,一些文本是部分可见的,例如:
我想删除部分可见的文本,因为它看起来有点糟糕,但我找不到这样做的方法。任何帮助,将不胜感激!
谢谢,
戴夫
我就是这样做的。我通过将方法 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;
}
这导致没有部分可见的文本!
您可以硬编码TextView
高度,使第二行文本不可见。
或使用:
android:maxLines , Makes the TextView be at most this many lines tall.
如上所述。
将您的文本视图放在滚动视图布局中。并为您的文本视图指定一个特定的宽度并使高度包裹内容。这样您的文本就不会被剪切。