Android - 两个句子,两个样式,一个TextView

时间:2012-01-25 08:38:25

标签: android layout textview

我想显示一个包含两个句子的TextView,我想让它们像这样依次出现:

AAAAAA: BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBB

其中A ...是第一个单词\句子的一部分而B ...是第二个句子。

A的大小...& B ......不是一成不变的。

尝试这样做:

    <RelativeLayout 
        style="@style/f13"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
        <TextView 
            android:id="@+id/first_text"
            android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AAAAAA: " />    
    <TextView 
            style="@style/f15"
            android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
        android:layout_toRightOf="@id/first_text" />                
    </RelativeLayout>

但我得到了:

AAAAAA: BBBBBBBBBBBBBBBBBBBBBBB
        BBBBBBBBB

我希望第二句话(B ...)继续低于第一句话(A ...) 我应该添加句子A ...&amp; B ...有不同的风格。

A的风格:

<style 
    name="f13">
    <item name="android:typeface">sans</item>
    <item name="android:textSize">15dp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@color/grey_dark_emperor</item>
</style>

B的风格:

<style 
    name="f15">
    <item name="android:typeface">sans</item>
    <item name="android:textSize">17dp</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textColor">@color/grey_dark_emperor</item>
</style>

有什么想法吗?

6 个答案:

答案 0 :(得分:16)

您可以尝试使用SpannableStringBuilder,如下所示:

String firstString = "AAAAAA: ";
String secondString = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB";

SpannableStringBuilder stringBuilder = new SpannableStringBuilder(firstString + secondString);
stringBuilder.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, firstString.length(),
            Spannable.SPAN_INCLUSIVE_INCLUSIVE);
stringBuilder.setSpan(new ForegroundColorSpan(Color.rgb(255, 0, 0)), firstString.length() + 1,
            firstString.length() + secondString.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(stringBuilder);

这将使第一个句子变为粗体,第二个句子变为红色。

答案 1 :(得分:2)

您可以使用HTML标记通过单个文本视图获得所需的效果。检查thisthis以及this

答案 2 :(得分:1)

您可以使用HTML来显示文字

myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));

答案 3 :(得分:0)

<RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    <TextView 
            android:id="@+id/first_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="AAAAAA: BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" />                
</RelativeLayout>

将其用作xml。

答案 4 :(得分:0)

通过使用单一文本视图,您将能够执行此操作。你只需要在单个textview中追加两个字符串。

textview.setText(first_text+":"+second_text);

答案 5 :(得分:-1)

你已将第二个文字的位置写为第一个文本的右边。

android:layout_toRightOf="@id/first_text"

据我所知,不可能继续在第一句话之下。它总是只在第一个文本的右侧写第二个文本。