2011-06-23 74 views
7

Làm cách nào để bạn có dấu hoa thị màu đỏ trong mục nhập để bạn có thể hiển thị dấu hoa thị ở cuối văn bản để cho biết trường bắt buộc, như: Nhập tên * (dấu hoa thị sẽ có màu đỏ). Hoặc, cho rằng vấn đề, bất cứ nơi nào trong văn bản.Cách lấy dấu sao màu đỏ trong mục nhập <string>

Trả lời

31

Bạn không thể thực hiện điều đó thông qua tài nguyên chuỗi xml. Điều này chỉ có thể được thực hiện thông qua mã. Đối với điều này, bạn cần sử dụng SpannableStringBuilderForegroundColorSpan.


Dưới đây là ví dụ nhỏ:

TextView text = (TextView)findViewById(R.id.text); 

String simple = "Enter your name "; 
String colored = "*"; 
SpannableStringBuilder builder = new SpannableStringBuilder(); 

builder.append(simple); 
int start = builder.length(); 
builder.append(colored); 
int end = builder.length(); 

builder.setSpan(new ForegroundColorSpan(Color.RED), start, end, 
       Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

text.setText(builder); 

enter image description here

+0

này đã làm việc một cách chính xác khi cần thiết: cảm ơn! Một câu hỏi liên quan với quá trình Stack Overflow nói chung: Tôi chỉ có thể tăng số điểm từ 1 lên 2 cho câu trả lời: bạn có phải có một đặc quyền nào đó để giành được nhiều hơn chỉ một vài điểm không? – charlest

+0

Không, không ai có thể trao giải nhiều hơn một điểm cho mỗi câu hỏi/câu trả lời. Đối xử với nó như bỏ phiếu: bạn bỏ phiếu cho nó, hoặc chống lại nó. Nếu bạn có câu hỏi về cách hoạt động của stackoverflow, hãy truy cập meta: http://meta.stackoverflow.com/; – inazaruk

+1

Bí quyết tuyệt vời. Nền tảng Android rất tiện lợi. –

4

Tham khảo this cho ví dụ về cách tạo kiểu phần của một TextView. Đây là cách bạn có thể làm điều đó cho một dấu sao màu đỏ.

EditText editTxt = new EditText(this); 
editTxt.setText("Testing asterisk *"); 
Spannable str = editTxt.getTxt(); 
int loc = editTxt.getTxt().toString().indexOf("*"); 
str.setSpan(new ForegroundColorSpan(Color.RED), loc, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 
1

Alternative cho thấy dấu hoa thị trong android TextView

txtvw2.setText(Html.fromHtml("<sup>*</sup>"+"enter you name")); 
Các vấn đề liên quan