4

我需要在布局中有 3 个文本。中间textView是红色的,另外两个是黑色的。所以我将它添加到 arelativelayout并将 textView2 设置layout为 textView1 的右侧,将 textView3设置为 textView2 的右侧

这就是我所做的

但是当第三个文本视图中的文本更大时,它应该是文本视图之一。我明白了。

当第三个文本更长时,我得到了这个

现在我该怎么做才能得到这样的东西?

这就是我需要的

  <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/rel_lay"
        android:background="#DFDFDF"
        android:padding="2dip" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="2dip"
            android:text="TextView"
            android:textColor="#000000" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/textView1"
            android:text="TextView"
            android:textColor="#FF0000" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="false"
            android:layout_toRightOf="@+id/textView2"
            android:text="TextView when the third text is longer"
            android:textColor="#000000" />

    </RelativeLayout>

这是具有 3 个 textView 的相对布局。

4

2 回答 2

1

使用Spanned类和一个 TextView 可能会更好。您尝试实现它的方式,TextView #3 必须在宽度上填充_parent,并且能够知道 TextView #2 的结束位置。

于 2013-03-05T07:01:34.813 回答
1

只需使用一个TextView并根据需要设置文本。您知道要为红色设置哪些文本。所以你需要的是开始文本和结束文本的索引

使用以下代码。

SpannableString spanText = new SpannableString("My Name is Chintan Rathod");
spanText.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")), 5 /*start index*/, 10 /*end index*/, 0);
textView.setText(spanText);

在这里,我传递了510,但您可以传递自己的索引。但请确保索引在不会触发IndexOutOfBoundException的范围内

于 2013-03-05T07:17:05.877 回答