2013-06-06 34 views
6

Tôi đã tìm kiếm kỹ lưỡng trên SO nhưng không nhận được câu trả lời cho câu hỏi của tôi.Android TextView trong BOLD và văn bản thông thường

Tôi muốn đặt đoạn văn, tôi sẽ đặt đoạn văn bằng XML bằng cách sử dụng

Văn bản có tiêu đề và các bước và văn bản thông thường. Tôi muốn làm cho Tiêu đề và các bước in đậm và phần còn lại trong văn bản bình thường.

Tôi có thể làm điều này bằng cách sử dụng khác nhau nhưng làm cách nào tôi có thể thực hiện điều đó trong cùng một TextView.

Tôi muốn sử dụng cùng một TextView làm cách nào tôi có thể đặt các thuộc tính khác nhau cho các câu khác nhau?

+1

Xem http://stackoverflow.com/a/6159538/1051147 –

Trả lời

12

trong chuỗi của bạn nộp

<string name="your_text"> 
<![CDATA[ 
<p> <b>Title</b> </p> 
<p><b><i>Step 1</i></b><p>step1 content content content content content content</p></p> 
<p><b><i>Step 2</i></b><p>step2 content content content content content content content</p></p> 
]]> 
</string> 

Sau đó, trong hoạt động của bạn

 TextView tv=(TextView)findViewById(R.id.textView1); 
     tv.setText(Html.fromHtml(getString(R.string.your_text))); 

Và đầu ra

enter image description here

+0

Trong trường hợp này, chúng tôi trực tiếp sử dụng các giá trị trong String, vì vậy XML liên quan đến na? –

+0

Đơn vị của Thay đổi Đơn vị \ 's –

+0

Cố gắng này, nhưng nó không gian không xem xét: x 78
____ Ngay cả trong bình luận của mình không gian không dùng ... có 3 không gian trước 43 và 4 –

2

Bạn có thể định dạng nó như bạn sẽ trong HTML: chúng ta hãy gọi này custom_text

<b>Your title here</b> 
This is the non-bolded stuff. 

Và sau đó tải các văn bản bằng cách sử dụng lớp Html:

mTextView.setText(Html.fromHtml(getString(R.string.custom_text))); 

Điều đó sẽ tạo ra một chuỗi spannable và thiết lập nó trên TextView.

+0

cách nào khác mà không cần sử dụng bro HTML? –

+0

Chúng ta có thể làm điều đó trực tiếp trong XML thay vì String.xml không? –

1

TextView s hỗ trợ SpannableStrings. Bạn có thể thực hiện tùy chỉnh của bạn String hoặc định dạng chuỗi của bạn trong html và sau đó đặt nó với tv.setText(Html.fromHtml(yourString));

19

Sử dụng một Spannable Chuỗi

TextView tv = (TextView) findViewById(R.id.tv); 
String steps = "Hello Everyone"; 
String title="Bold Please!"; 

SpannableString ss1= new SpannableString(title); 
ss1.setSpan(new StyleSpan(Typeface.BOLD), 0, ss1.length(), 0); 
tv.append(ss1); 
tv.append("\n"); 
tv.append(steps); 

enter image description here

Đối với phong cách hơn kiểm tra liên kết @http://blog.stylingandroid.com/archives/177

+0

[Đây là Ảnh chụp màn hình] (http://image.prntscr.com/image/bbe1b95ceedf437eae54a751986c8641.png) Cảm ơn, công trình này tốt cho tôi! Như bạn thấy, tôi có thể đặt BOLD cho "Tiêu đề", "Tác giả" và "Thẻ". –

2

xin vui lòng đặt chuỗi này để res-> string.xml

<string name="your_html"> 
    <![CDATA[p><b>This is bold text</b> rementing is simple text 

    ]]> 
    </string> 

Bây giờ bạn có thể sử dụng bất cứ khi nào bạn phải yêu cầu điều này.

tv.setText(Html.fromHtml(getString(R.string.your_html))); 

Đó là đường nét đẹp nhất và làm việc.

+0

Xin chào Tôi đã thử tất cả các cách tạo chuỗi Bold và In nghiêng trong Android M, nó không hoạt động. – Raghu

0

Thay vào đó, sử dụng này:

khai báo đầu tiên TextView

TextView tv1 = (TextView) getActivity().findViewById(R.id.t1);

Sau đó thiết lập đó là văn bản vào chuỗi bạn muốn

tv1.setText(Html.fromHtml(getString(R.string.my_text)));

Cuối cùng, sử dụng thiết lập các kiểu chữ cho văn bản của bạn

tv1.setTypeface(null, Typeface.BOLD);

Và bạn đã hoàn tất.

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