强制TextView为多行而不用\ n

时间:2011-05-15 06:36:29

标签: android

知道如何在视图内部空间不足时强制textview转到新行。我想要发生的行为是,没有以编程方式找出大小并强制换行,我希望它由iteself发生。

在此代码中,它会强制按钮离开屏幕。

<TableRow>
                <TextView android:layout_width="fill_parent"
                    android:paddingLeft="5dp" android:paddingRight="5dp"
                    android:singleLine="false" android:layout_height="wrap_content"
                    style="@style/heading1" android:gravity="left" android:id="@+id/store_address"></TextView>

                <TableLayout android:layout_height="wrap_content"
                    android:layout_width="wrap_content" android:gravity="right">
                    <TableRow>
                        <ImageView android:id="@+id/img_user" android:gravity="right"
                            android:layout_width="wrap_content" android:layout_height="wrap_content"
                            android:scaleType="fitXY" android:src="@drawable/qrcode"
                            android:paddingBottom="2dp" />
                    </TableRow>
                    <TableRow>
                        <ImageView android:id="@+id/nfc" android:gravity="right"
                            android:layout_width="wrap_content" android:layout_height="wrap_content"
                            android:scaleType="fitXY" android:src="@drawable/nfc" />
                    </TableRow>
                </TableLayout>
            </TableRow>

2 个答案:

答案 0 :(得分:6)

将以下属性添加到TextView控件:

android:maxWidth = "100dip" 在这里我使用了100dip,你可以给出你想要的任何尺寸。一旦文本超出指定的宽度,它将自动转移到新行。

答案 1 :(得分:1)

这不是处理问题的最有效方式,但我增加了 TextView 的高度,具体取决于绘制的线数。

        // Create TextViews with Question
        TextView question = new TextView(this);

        if (("Q" + i + ". " + alQuestions.get(i-1)).length() < 70)
        {
            question.setLayoutParams(new TableRow.LayoutParams(0, 75, .9f));
        }
        else if (("Q" + i + ". " + alQuestions.get(i-1)).length() < 110)
        {
            question.setLayoutParams(new TableRow.LayoutParams(0, 100, .9f));
        }
        else if (("Q" + i + ". " + alQuestions.get(i-1)).length() < 150)
        {
            question.setLayoutParams(new TableRow.LayoutParams(0, 125, .9f));
        }

        question.setTextColor(Color.BLUE);
        question.setSingleLine(false);
        question.setEllipsize(TextUtils.TruncateAt.END);
        question.setMaxLines(5);