我正在尝试创建一个接一个地放置两个TextView的布局。最好的选择是只使用一个TextView而只是连接字符串并以某种方式设置一个部分粗体?
目前我得到奇怪的效果,除非我使用权重,否则一个TextView可能会被挤压。
我想要的例子:
[第一次观看文字] [第二次观看文字]
[第一个文字视图真的非常真实地真的非常真实地真的非常长实] [第二个文字视图]
[第一次观看文字] [文字视图真的非常非常真实地真的非常真实地非常长实]
<LinearLayout
android:id="@+id/Names"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/ivProfileImage"
>
<TextView
android:layout_marginLeft="10dp"
android:gravity="center"
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Namedsfsfsafsafsadfasfsadffddsfsfdsfdssafsafa fdsfds"
android:textStyle="bold" />
<TextView
android:layout_marginLeft="10dp"
android:gravity="left|center"
android:id="@+id/tvUserName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="none"
android:layout_weight="1"
android:text="fdfds@usernamestuff dsfdsfsdfsdsdfdsfdsdsfsdfsfds" />
</LinearLayout>
通过这种布局,我看到的是文本视图基本上占据了布局宽度的一半(当文本很长时)并且不会自然流动。看起来有点奇怪:
[第一个视图真的很长 ..... | [这方面的观点]
像这样分手了] ........ |
答案 0 :(得分:1)
使用SpannableString
可以实现所描述的行为
正如本Sample
SpannableString styledString
= new SpannableString("Large\n\n" // index 0 - 5
+ "Bold\n\n" // index 7 - 11
);
// make the text twice as large
styledString.setSpan(new RelativeSizeSpan(2f), 0, 5, 0);
// make text bold
styledString.setSpan(new StyleSpan(Typeface.BOLD), 7, 11, 0);
// use the created string
textView.setText(styledString);
这样您只需使用一个TextView
,就可以避免管理不同的视图。只需按照您的意愿处理您的字符串,然后将其显示在TextView