数字のリストを表示する必要があるアプリケーションがありますが、その数値に基づいて数値をフォーマットする必要があります。負の数は通常のテキストで表示され、正の数はの太字ので示されます。また、数値はテキストビューで常に正の値を示す必要があります。私は、次のようなオーバーライドのsetTextでのTextViewを拡張しようとした:テキスト値に基づいてフォーマットされた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上で複数回呼び出されていたとして、かなりの仕事を、しませんでした。その結果、次回に陽性となったすべての数字が太字で表示されました。
私のアプリケーションでは非常に一般的なオカレンスなので、テキストが設定されている場所ではなく、このロジックをウィジェットに入れておきたいと思います。
ウィジェットでこれを行う方法はありますか?
あなたは、なぜ新しいのsetText(ダブル)を作らないのsetText(CharSequence引数)をオーバーライドhttp://plugins.jquery.com/plugin-tags/number-format – mozillanerd
の代わりを試してみました。また、私が正しくフォーマットされたテキストを取得しようとしたときに、setTypeFace()ではなくfromHtml()でもっと良い運を得ました。 – FoamyGuy
私はそれについて考えましたが、いくつかのアダプターでMyTextViewを使用します。 setText(double)を使用するために私自身のアダプタをロールアップすることができましたが、MyTextViewですべてを処理する方が簡単だと思います。 – Chewie