Как изменить цвет текста без изменения всего цвета текста - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь изменить цвет текста, просто нажимая кнопку, но когда я нажимаю кнопку, он также изменяет ранее напечатанный цвет текста. Значит меняет весь цвет текста. Когда я пытаюсь изменить цвет через Spannable, он меняет цвет выделенной части текста, но не для текста, который я собираюсь напечатать следующим. Есть ли способ, где я могу нажать на кнопку, и это не меняет весь цвет текста, но цвет, для которого я печатаю дальше. Спасибо

enter image description here

вот что я знаю только

redtxt.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
            str.setSpan(new ForegroundColorSpan(Color.parseColor(txtColor)),     selStart, selEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
               text.setTextColor(Color.parseColor("#d32f2f"));
       }
   });

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

получить весь текст в Spannable как

Spannable text = edittext.getText();

После этого просто сделайте.

if (edittext.getText().length() != 0){
     text.setSpan(new ForegroundColorSpan(YOUR_COLOR), selection_start, selection_end, 34);
}
0 голосов
/ 17 ноября 2018

Вам необходимо реализовать Spannable String (глобальный объект) и для события onChangeText просто добавить составную строку в Spannable String Builder.

    SpannableStringBuilder objSpannableStringBuilder;

edt.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
              final SpannableString text = new SpannableString(s.toString());
              text.setSpan(new ForegroundColorSpan(Color.RED), 3, text.length() - 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);                  objSpannableStringBuilder.append(text);
              your_edit_text.setText(objSpannableStringBuilder);

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
0 голосов
/ 17 ноября 2018

вы можете использовать SpannableString, например:

final SpannableString text = new SpannableString("Hello stackOverflow");
text.setSpan(new RelativeSizeSpan(1.5f), text.length() - "stackOverflow".length(), text.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setSpan(new ForegroundColorSpan(Color.RED), 3, text.length() - 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...