Android - два предложения, два стиля, один TextView - PullRequest
9 голосов
/ 25 января 2012

Я пытаюсь отобразить 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>

есть мысли?

Ответы [ 6 ]

16 голосов
/ 25 января 2012

Вы можете попробовать использовать 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);

При этом первое предложение будет выделено жирным шрифтом, а второе - красным.

2 голосов
/ 25 января 2012

Вы можете использовать HTML-теги, чтобы получить желаемый эффект с помощью одного текстового представления.Отметьте это и это , а также это .

1 голос
/ 25 января 2012

Вы можете использовать HTML для отображения вашего текста

myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));
0 голосов
/ 25 января 2012

вы написали позицию второго текста справа от первого текста.

android:layout_toRightOf="@id/first_text"

так что, насколько мне известно, невозможно продолжить ниже первого предложения. Всегда пишется только второй текств правой части первого текста.

0 голосов
/ 25 января 2012

Используя только один просмотр текста, вы сможете это сделать.вам просто нужно добавить две строки в одном текстовом представлении.

textview.setText(first_text+":"+second_text);
0 голосов
/ 25 января 2012
<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.

...