0

私のアプリでは、実行時に読み込まれるさまざまな長さのテキストを含むいくつかのテキスト ビューを表示します。テキスト ビューのサイズやテキストの長さは実行時までわかりません。テキストが長くて textview が小さい場合、一部のテキストが部分的に表示されることがあります。次に例を示します。

ここに画像の説明を入力

少し見栄えが悪いので、部分的に表示されているテキストを削除したいのですが、これを行う方法が見つかりません。どんな助けでも大歓迎です!

ありがとう、

デイブ

4

3 に答える 3

0

テキストビューをスクロールビューレイアウトに配置します。テキストビューに特定の幅を指定し、高さでコンテンツをラップします。テキストが切り取られないようにします。

于 2013-03-27T11:31:48.867 に答える
0

TextViewテキストの 2 行目が表示されないように、高さをハードコーディングできます。

または使用:

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

上で提案したように。

于 2013-03-27T11:29:51.770 に答える
0

これが私がやった方法です。メソッド 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;
    }

これにより、テキストが部分的に表示されなくなります。

于 2013-03-28T16:08:38.273 に答える