【问题标题】:Android - two sentences, two styles, one TextViewAndroid——两句话,两种风格,一种TextView
【发布时间】:2012-02-18 11:08:11
【问题描述】:

我很想显示一个包含两个句子的 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... & 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>

有什么想法吗?

【问题讨论】:

  • 您是否出于某种原因使用 2 个文本视图?我认为这可以通过单个 TextView 轻松完成。这样包装将自动按照您想要的方式完成。
  • 你说A&B的大小不是恒定的..也就是说值是动态rt?
  • 我正在使用或更想使用,一个文本视图

标签: android layout textview


【解决方案1】:

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

【讨论】:

  • 我想为每个句子添加不同的样式,所以我需要支持布局样式
  • 您是否检查了我提到的 commonsware 博客中的标签。有许多参数可以更改您想要的文本样式。您不能对每个句子使用 并解决您的问题吗?.. 如果您仍然面临问题,请不要犹豫发布你用 html 标签尝试过的内容
【解决方案2】:

您可以使用 HTML 来显示您的文本

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

【讨论】:

  • 我想为每个句子添加不同的样式,所以我需要支持布局样式
【解决方案3】:

您可以尝试如下使用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);

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

【讨论】:

  • 我可以添加对样式的支持吗?我没有提到那句话A...和B...有不同的风格
  • 是的,你可以使用TextAppearanceSpan作为setspan函数的参数来设置文本的颜色、大小、样式和字体。
  • 我已经尝试了很多解决方案,但这个解决方案确实帮助我在单个 textview 中为两个句子做不同颜色的小部件 texview。
【解决方案4】:
<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。

【讨论】:

  • 正如我提到的 A... 和 B... 不是恒定的并且不同
  • 然后您可以通过编程方式设置文本。
  • 好的...您需要以编程方式设置它们的样式。请指定你想给他们每个人什么样式?你可以使用 SpannableString 来实现。
  • 请参考lexmiir的回答。
  • 我可以通过 SpannableString 添加样式吗?
【解决方案5】:

通过使用单个文本视图,您将能够做到这一点。您只需要在单个文本视图中附加两个字符串。

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

【讨论】:

  • 我想为每个句子添加不同的样式,所以我需要支持布局样式
【解决方案6】:

您已将第二个文本的位置写在第一个文本的右侧。

android:layout_toRightOf="@id/first_text"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多