一个接一个地对齐两个TextView(假设第一个textview很长)

时间:2017-10-02 12:59:29

标签: android

我正在尝试创建一个接一个地放置两个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>

通过这种布局,我看到的是文本视图基本上占据了布局宽度的一半(当文本很长时)并且不会自然流动。看起来有点奇怪:

[第一个视图真的很长 ..... | [这方面的观点]

像这样分手了] ........ |

1 个答案:

答案 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