我需要布局中有3个文字。中心的textView
颜色为红色,另外2个为黑色。所以我将它添加到relativelayout
并将layout
设置为textView2右侧的textView2和textView2右侧的textView3
但是当第三个文本视图中的文本更大时,它应该是textview one。我得到了这个。
现在该怎么办才能得到这样的东西?
<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的相对布局。
答案 0 :(得分:1)
使用Spanned类和一个TextView可能会更好。你试图实现它的方式,TextView#3必须在宽度上填充_parent并且能够知道TextView#2的结束位置。
答案 1 :(得分: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);
在这里,我已通过 5 和 10 ,但您可以传递自己的索引。但要确保 index 在范围内不会触发 IndexOutOfBoundException