在TextView中格式化文本

时间:2012-12-06 14:28:20

标签: android textview

我在linearlayout中有两个textview。在一个textview中,文本包含21个字符,而在另一个textview中,文本只包含12个字符。第一个textview显示为两行,第二个textview显示为单行。我希望textview文本在单行或双行中都应该相同。

我使用了以下代码:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp" >

    <TextView
        android:id="@+id/tvtextview1"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_margin="1dp"
        android:layout_weight="1"
        android:inputType="textMultiLine"
        android:scrollHorizontally="false"
        android:gravity="center"
        android:textColor="#FFFFFF"
        android:textSize="16sp" >
    </TextView>

    <TextView
        android:id="@+id/tvtextview2"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_margin="1dp"
        android:layout_weight="1"
        android:scrollHorizontally="false"
        android:gravity="center"
        android:inputType="textMultiLine"
        android:textColor="#FFFFFF"
        android:textSize="16sp">
    </TextView>
</LinearLayout>

任何人都可以帮我解决这个问题吗?提前谢谢。

6 个答案:

答案 0 :(得分:3)

如果您希望它们都是单行使用android:singleLine="true"

<TextView
    android:layout_margin="10dip"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:singleLine="true"
    android:text="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    android:textSize="16sp" />

<TextView
    android:layout_margin="10dip"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:singleLine="true"
    android:text="xxxxxxxxxxxxxxxxxxxxxxxx"
    android:textSize="16sp" />

答案 1 :(得分:1)

android:minLines="2"个标记中添加<TextView>

答案 2 :(得分:0)

android:singleLine="true"

此外,您的textviews也具有完全相同的ID。你可能想改变它。

答案 3 :(得分:0)

您可以设置属性:

android:lines="2"
android:maxLines="2"

两个TextViews

答案 4 :(得分:0)

尝试使用此示例代码修复文本视图的高度

<TextView
    android:id="@+id/tvtextview1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="1dp"
    android:gravity="center"
    android:minHeight="50dp"
    android:singleLine="true"
    android:scrollHorizontally="false"
    android:text="sdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsd"
    android:textSize="16sp" >
</TextView>

<TextView
    android:id="@+id/tvtextview2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="1dp"
    android:gravity="center"
    android:lines="2"
    android:minHeight="50dp"
    android:inputType="textMultiLine"
    android:scrollHorizontally="false"
    android:text="sdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsdsdfsdfsdfsdfsd"
    android:textSize="16sp" >
</TextView>

答案 5 :(得分:0)

以编程方式检索屏幕宽度和2个文本的最大宽度。如果文本宽度大于屏幕宽度,则在您的情况下将TextView行数设置为2。否则,到1。

使用Paint计算文字的宽度。

    int screenWidth = this.getWindowManager().getDefaultDisplay().getWidth();

    TextView t1 = (TextView) this.findViewById(R.id.tvtextview1);
    TextView t2 = (TextView) this.findViewById(R.id.tvtextview2);

    Paint paint = new Paint();
    String longText = "123456789012345678901";

    paint.setTextSize(30);

    float textWidth = paint.measureText(longText);

    if((int)textWidth > screenWidth)
    {
        t1.setLines(2);
        t2.setLines(2);
    } else
        {
            t1.setLines(2);
            t2.setLines(2);
        }