У меня есть приложение, в котором мне нужно отображать список чисел, но цифры должны быть отформатированы в зависимости от их значения. Отрицательные числа показаны в обычном тексте, положительные числа показаны как жирным шрифтом. Кроме того, число должно всегда казаться позитивным в текстовом представлении. Я попытался простирающийся TextView с SetText перекрываться как таковой:Текст TextView, отформатированный на основе текстового значения
@Override
public void setText(CharSequence text, TextView.BufferType type) {
double number = Double.parseDouble(text.toString());
if (number > 0) {
this.setTypeface(this.getTypeface(), BOLD);
} else {
this.setTypeface(this.getTypeface(), NORMAL);
number = Math.abs(number);
}
super.setText(number + "", type);
}
Это не совсем работа, как SetText было называют несколько раз на одной и той же MyTextView. Это привело к тому, что каждое число было выделено жирным шрифтом, поскольку в следующий раз оно было положительным.
Я хотел бы сохранить эту логику в виджетах, а не там, где установлен текст, поскольку это очень распространенное явление в моем приложении.
Есть ли способ, которым я могу это сделать в виде виджета?
Вы пробовали http://plugins.jquery.com/plugin-tags/number-format – mozillanerd
вместо переопределения SetText (CharSequence) почему бы не сделать новый SetText (дважды). Также, если я правильно помню, когда я пытался получить форматированный текст, мне было гораздо лучше повезло с fromHtml(), а не setTypeFace(). – FoamyGuy
Я думал об этом, но я использую MyTextView в паре адаптеров. Я мог бы свернуть собственный адаптер для использования setText (double), но я думаю, что было бы проще просто позаботиться обо всем этом в MyTextView. – Chewie