Tôi đang cố gắng áp dụng màu phông chữ cho văn bản trong EditText khi bạn nhập văn bản. Tuy nhiên, nó chỉ rất không nhất quán, có nghĩa là đôi khi nếu bạn gõ một dấu cách, văn bản trước khoảng trắng đó sẽ quay trở lại màu đen mặc định. Hoặc nếu tôi đặt con trỏ ở giữa một từ và bắt đầu nhập toàn bộ từ thay đổi màu và không chỉ là văn bản tôi đang nhập. Chữ đậm, nghiêng và gạch dưới dường như hoạt động tốt. Làm cách nào để đảm bảo rằng chỉ văn bản tôi nhập sẽ bị ảnh hưởng liên quan đến màu phông chữ?Android EditText: Cách áp dụng khoảng màu Foreground khi bạn nhập?
Xem "SIZE VÀ MÀU" bình luận dưới đây ...
contentEdit.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
//add style as the user types if a toggle button is enabled
ToggleButton boldButton = (ToggleButton) findViewById(R.id.bold);
ToggleButton emButton = (ToggleButton) findViewById(R.id.italic);
ToggleButton underlineButton = (ToggleButton) findViewById(R.id.underline);
int position = Selection.getSelectionStart(contentEdit.getText());
try{
if (position < 0){
position = 0;
}
if (position > 0){
if (styleStart > position || position > (cursorLoc + 1)){
//user changed cursor location, reset
if (position - cursorLoc > 1){
//user pasted text
styleStart = cursorLoc;
}
else{
styleStart = position - 1;
}
}
if (boldButton.isChecked()){
StyleSpan[] ss = s.getSpans(styleStart, position, StyleSpan.class);
for (int i = 0; i < ss.length; i++) {
if (ss[i].getStyle() == android.graphics.Typeface.BOLD){
s.removeSpan(ss[i]);
}
}
s.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), styleStart, position, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
if (emButton.isChecked()){
StyleSpan[] ss = s.getSpans(styleStart, position, StyleSpan.class);
for (int i = 0; i < ss.length; i++) {
if (ss[i].getStyle() == android.graphics.Typeface.ITALIC){
s.removeSpan(ss[i]);
}
}
s.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), styleStart, position, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
if (underlineButton.isChecked()){
UnderlineSpan[] ss = s.getSpans(styleStart, position, UnderlineSpan.class);
for (int i = 0; i < ss.length; i++) {
s.removeSpan(ss[i]);
}
s.setSpan(new UnderlineSpan(), styleStart, position, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
//SIZE AND COLOR//////////////////////////////////////////////////////
s.setSpan(new ForegroundColorSpan(m_color), position, position, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
s.setSpan(new AbsoluteSizeSpan(m_curSize, true), position, position, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
}
catch(Exception e){
//Toast.makeText(m_ctx, m_ctx.gets, Toast.LENGTH_LONG).show();
showMessage(R.string.NOTE_WARNING_STYLE,m_utils.MSGTYPE_WARNING);
}
cursorLoc = Selection.getSelectionStart(contentEdit.getText());
}
bất kỳ ai ?? Đây là điều tôi đang tìm kiếm câu trả lời trong một thời gian hiện tại ... – Mike6679
Bạn đang thử nghiệm phiên bản Android nào? Phiên bản tối thiểu và được nhắm mục tiêu? –
2.2 là min và được nhắm mục tiêu – Mike6679