2012-01-25 24 views
8

Tôi tyring để hiển thị một TextView có chứa hai câu và tôi muốn họ được một sau khi khác như thế này:Android - hai câu, hai phong cách, một TextView

AAAAAA: BBBBBBBBBBBBBBBBBBBBBBB 
BBBBBBBBB 

trong đó A ... là từ đầu tiên \ một phần của câu và B ... là câu thứ hai.

kích thước A ... & B ... không đổi.

cố gắng làm điều này:

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

nhưng tôi đã nhận:

AAAAAA: BBBBBBBBBBBBBBBBBBBBBBB 
     BBBBBBBBB 

và tôi muốn (B ...) câu thứ hai để tiếp tục bên dưới câu đầu tiên (A ...) tôi nên thêm câu A ... & B ... có các kiểu khác nhau.

kiểu cho 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> 

kiểu cho 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> 

bất kỳ suy nghĩ?

+1

Bạn đang sử dụng 2 bản xem trước văn bản vì một lý do? Tôi nghĩ rằng điều này có thể dễ dàng thực hiện với một TextView duy nhất. Bằng cách đó, các gói sẽ được tự động thực hiện theo cách bạn muốn nó. –

+2

có xem xét sử dụng [SpanableString trong một TextView duy nhất] (http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring) –

+0

u nói rằng kích thước của A & B không liên tục..điều đó có nghĩa là giá trị là rt động? –

Trả lời

15

Bạn có thể thử sử dụng SpannableStringBuilder như sau:

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); 

này sẽ làm cho câu đầu tiên được in đậm, và một trong những thứ hai có màu đỏ.

+0

tôi có thể thêm hỗ trợ cho kiểu không? tôi đã không đề cập đến câu A ... và B ... có các kiểu khác nhau – senior

+2

Có, bạn có thể sử dụng [TextAppearanceSpan] (http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html) làm tham số cho hàm setspan để đặt màu văn bản, kích thước, kiểu và kiểu chữ. – lexmiir

+0

hoạt động nhờ ơn! – senior

2

Bạn có thể sử dụng thẻ HTML để có được hiệu ứng mong muốn với một chế độ xem văn bản duy nhất. Kiểm tra thisthis và cũng this.

+0

tôi muốn thêm các kiểu khác nhau cho mỗi câu vì vậy tôi cần hỗ trợ cho kiểu bố cục – senior

+0

Bạn đã kiểm tra các thẻ trong blog commonsware mà tôi đã đề cập chưa. Có nhiều thông số để thay đổi kiểu văn bản bạn muốn. Bạn không thể sử dụng cho mỗi câu và giải quyết vấn đề của mình không? .. Nếu bạn vẫn gặp vấn đề thì không ngần ngại đăng những gì bạn đã thử bằng các thẻ html – manjusg

+0

cảm ơn nhưng câu trả lời của lexmiir đã đúng ngay tại chỗ – senior

1

Bạn có thể sử dụng HTML để hiển thị văn bản của bạn

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

tôi muốn thêm các kiểu khác nhau cho mỗi câu vì vậy tôi cần hỗ trợ cho kiểu bố cục – senior

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> 

Sử dụng làm xml.

+0

như tôi đã đề cập A ... & B ... không phải là hằng số và khác nhau – senior

+0

Sau đó, bạn có thể đặt văn bản theo chương trình. – Hiral

+0

và các kiểu khác nhau .... – senior

0

Chỉ bằng một lần xem văn bản duy nhất, bạn sẽ có thể thực hiện. bạn chỉ cần thêm hai chuỗi trong một lần xem văn bản.

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

tôi muốn thêm các kiểu khác nhau cho mỗi câu vì vậy tôi cần hỗ trợ cho kiểu bố cục – senior

-1

u đã viết vị trí của văn bản thứ hai là bên phải của văn bản đầu tiên.

android:layout_toRightOf="@id/first_text" 

để tôi không thể tiếp tục bên dưới câu đầu tiên.it luôn viết văn bản thứ hai ở phía bên phải của văn bản đầu tiên.

Các vấn đề liên quan