Tôi đang làm việc trên một ứng dụng mà người dùng có thể đăng nội dung lên nguồn cấp dữ liệu. Trong văn bản chỉnh sửa của tôi (được sử dụng để soạn thảo), màu văn bản có màu xám. Tuy nhiên, khi người dùng nhập thẻ băm, ví dụ: #help Tôi cần tô màu văn bản màu đen khi họ nhập, vì vậy khi người dùng nhập '#' văn bản phải có màu đen cho đến khi họ bắt đầu một từ mới, sau đó màu văn bản cần hoàn nguyên về màu xám.Thay đổi màu của văn bản khi người dùng nhập thẻ băm
Tôi đã thử sử dụng trình theo dõi văn bản và chuỗi có thể chỉnh màu thành màu.
Dưới đây là những gì tôi đã làm với textwatcher onTextChanged
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//Remove Text watcher to prevent infinite look
mTextField.removeTextChangedListener(contentFieldWatcher);
String startChar = null;
startChar = Character.toString(s.charAt(start));
L.i(getClass().getSimpleName(), "CHARACTER OF NEW WORD: " + startChar);
if (startChar.equals("#")) {
tagCheck(s.toString().substring(start), start, start + count);
}
}
phương pháp tagCheck
private void tagCheck(String s, int start, int end) {
mSpannable.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.black_colour)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mSpannable là một Spannable.
Vấn đề với phương pháp này là '#' hiển thị dưới dạng startChar, tuy nhiên khi người dùng nhập ký tự tiếp theo, ký hiệu hoặc chữ cái, thì nó sẽ hiển thị dưới dạng startChar. Nếu như người dùng gõ santa - 's' vẫn là startChar. Vì vậy, vấn đề tôi đang phải đối mặt với cách tự động tô màu văn bản khi người dùng nhập thẻ bắt đầu bằng #.
Vì vậy, các chữ cái đơn giản hoạt động chính xác, tuy nhiên khi bạn sử dụng ký hiệu thì không. Tôi hy vọng câu hỏi này đã rõ ràng ... Tôi đã xem xét điều này trong một vài ngày và tất cả đều trở nên mơ hồ :)
Chú ý rằng bạn nhất làm hashtag rõ ràng từ các nhân vật không phù –
có một vấn đề với khả năng tự đề nghị, nếu người dùng nhấp vào đề xuất tự động, chúng tôi sẽ mất màu –