2016-06-21 3 views
1

Я работаю над типом игры на Android. Он имеет текстовый вид с предложением, которое пользователь должен ввести. Каждый раз, когда текущее слово, которое пользователь вводит, будет подчеркнуто, как только пользователь закончит слово, это слово изменит цвет в зависимости от времени, которое требуется для ввода (например> 5 секунд = красный, < 5 секунд зеленый).Подчеркивание и изменение цвета текста в Android TextView

Мой вопрос: как я могу подчеркнуть и изменить цвет слов в текстовом представлении, чтобы, когда я подчеркиваю новое слово, он также сохранит цвет предыдущих?

В настоящее время я делаю некоторые вещи, как это каждый раз, когда я перейти к следующему слову

String texts = myTextView.getText().toString(); 
// put the next word to be underlined between <u> </u> tags 
myTextView.setText(Html.fromHtml(texts)); 

Как вы можете видеть, это будет подчеркнуть следующее слово, но все цвета предыдущих слов будет но я хочу сохранить их.

Благодарим за помощь!

Редактировать: мой текст уже исправлен, и пользователь должен ввести слова, которые они видят. Например, у меня есть предложение «Sample Sentence Hello». Я хочу сначала подчеркнуть «Образец», затем подчеркнуть «Предложение», «Образец» изменился на красный или зеленый, затем подчеркнутый «Привет», а «Образец» и «Предложение» изменились на красный или зеленый в зависимости от времени, которое потребовалось пользователь вводит каждое слово.

+0

Вы должны идти с Spannable класса. http://stackoverflow.com/questions/3282940/set-color-of-textview-span-in-android –

+0

@ K.Gandhi Спасибо, как я вижу, мне нужно хранить начальные индексы каждого слова до используйте Spannable. Это правильно? – Nguyen

+0

да, вы можете пойти с этим. Это просто базовая идея ... вы должны копать и легко работать. –

ответ

0

Попробуйте этот путь, чтобы создать подчеркивание

<resources> 
    <string name="your_string"> 
     This is an <u>underline</u>. 
    </string> 
</resources> 

Java

TextView tv = (TextView) view.findViewById(R.id.tv); 
SpannableString content = new SpannableString("Content"); 
content.setSpan(new UnderlineSpan(), 0, content.length(), 0); 
tv.setText(content); 

ИЛИ используя краску

txt.setPaintFlags(txt.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
+0

Спасибо. Я получаю что-то, но это все еще не то, что я имею в виду. Я хочу подчеркнуть/изменить цвет только 1 слово из текстов за раз и сохранить измененный цвет предыдущих слов при переходе к следующим. – Nguyen

+0

Я предлагаю взять отдельное слово как строку или сделать массив, а затем применить цвет, используя spannable –

+0

Да, я думаю, что я разделил предложение на массив - это лучший способ, который я могу сделать прямо сейчас. Благодаря! – Nguyen

0

Вы можете запрограммировать его на TextView.

как в if else состояние.

if(time > 5){  
    String texts = myTextView.getText().toString(); 
    myTextView.setText(texts); 
    myTextView.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
    mTextView.settextColor(Color.parsecolor("#FF0000")); 

}else { 
    String texts = myTextView.getText().toString(); 
    myTextView.setText(texts); 
    myTextView.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
    mTextView.settextColor(Color.parsecolor("#0000FF")); 
} 
+0

Спасибо, но как я могу подчеркнуть и изменить цвет 1 слово за раз? Например, в моем текстовом представлении содержится предложение «Sample Sentence», я хочу, чтобы сначала было выделено слово «Sample», а затем подчеркнуто «Sentence», а «Sample» меняет цвет на красный или зеленый. – Nguyen

+0

@Nguyen: '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' пользователь '. – Ironman

+0

мой текст статический – Nguyen

Смежные вопросы