2016-10-14 4 views
0

Android 4.4でhtml変換機能を拡張しようとしています。 テキストブロック内の任意のテキストサイズを絶対値に変更する必要があります。android、textview and MetricAffectingSpan

は、だから私は、テキストの開始ブロックは、このようなAbsoluteSizeSpanでサイジングしている:

ass = new AbsoluteSizeSpan(Integer.valueOf(18), true); 
output.setSpan(ass, 0, 255, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

私はこのスパン内の単語や文のサイズを変更する必要がある場合、私は再び同じことをやっています -

ass = new AbsoluteSizeSpan(Integer.valueOf(12), true); 
output.setSpan(ass, 100, 185, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

しかし、これは考慮されていません。

これはこれができないということですか? これを許可するには、テキストビューで何かを変更する必要がありますか?

+0

の例の解決策を見つけることができます 'AbsoluteSizeSpan'は他の内側だけ* *動作しません。代わりに私の答えを見てください。 –

+0

私は理由を理解したいと思っていますが... – Simon

+0

私は修正しました。これらの入れ子にされたスパンをAPI16の単純なケースに戻すことができます。今度は、テキストレイアウトコード鉱山地です。あなたの質問を、失敗したコードスニペットで更新してください。また、実行しているAPIをお知らせください。 widthは改行がどこで発生するかを決定し、多くの奇妙なバグが改行の周りに現れているので、あなたの 'TextView'のレイアウトの詳細が参考になります。私はそれを再現できるだけの十分な情報が必要です。おそらくスクリーンショット?私は私の答えを更新します。 –

答えて

1
 AbsoluteSizeSpan ass18 = new AbsoluteSizeSpan(Integer.valueOf(18), true); 
     AbsoluteSizeSpan ass12 = new AbsoluteSizeSpan(Integer.valueOf(12), true); 
     output.setSpan(ass18, 0, 100, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     output.setSpan(ass12, 100, 185, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     output.setSpan(ass18, 185, 255, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
+0

@シモン、それは働いています。 – Madhan

+0

これは回避策に見えますが、まだ別のものにネストされていないようです。 htmlタグを処理するときには、これらのリストを別々にしておき、新しいものがあるたびにそれらをスキャンし、一方が他方の中に入れ子になったら定義を分割する必要があります。実際に他のものの中に入れ子にする方法があれば、過剰なものに見えます。 – Simon