私のアプリでは、実行時に読み込まれるさまざまな長さのテキストを含むいくつかのテキスト ビューを表示します。テキスト ビューのサイズやテキストの長さは実行時までわかりません。テキストが長くて textview が小さい場合、一部のテキストが部分的に表示されることがあります。次に例を示します。
少し見栄えが悪いので、部分的に表示されているテキストを削除したいのですが、これを行う方法が見つかりません。どんな助けでも大歓迎です!
ありがとう、
デイブ
私のアプリでは、実行時に読み込まれるさまざまな長さのテキストを含むいくつかのテキスト ビューを表示します。テキスト ビューのサイズやテキストの長さは実行時までわかりません。テキストが長くて textview が小さい場合、一部のテキストが部分的に表示されることがあります。次に例を示します。
少し見栄えが悪いので、部分的に表示されているテキストを削除したいのですが、これを行う方法が見つかりません。どんな助けでも大歓迎です!
ありがとう、
デイブ
テキストビューをスクロールビューレイアウトに配置します。テキストビューに特定の幅を指定し、高さでコンテンツをラップします。テキストが切り取られないようにします。
TextView
テキストの 2 行目が表示されないように、高さをハードコーディングできます。
または使用:
android:maxLines , Makes the TextView be at most this many lines tall.
上で提案したように。
これが私がやった方法です。メソッド CheckTextIsVisible を親の relativelayout のハンドラー キューに投稿することで、アクティビティが読み込まれた後にこのコードを実行しました。そうしないと、テキストビューの高さがわかりません。
m_eventsLayout.Post(new Action(CheckTextIsVisible));
次に、メソッド CheckTextIsVisible は、テキストを含む各テキストビューを見つけ、フォントの高さを計算し、テキストビューに収まる行数を計算し、それに応じて最大行数を設定します。
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;
}
これにより、テキストが部分的に表示されなくなります。