我找不到解决方案。我的textview中的文字有两种字体:行间距`不同。
问题是:如果Textview包含具有两种行间距的文本,我如何获得每个文本的高度?
我使用了很多样本,但是我无法达到好的结果,Paint类的方法无法解决我的问题。
请帮助
答案 0 :(得分:1)
private SpannableStringBuilder setSpanColor(final String str, final String text) {
SpannableStringBuilder ssb = new SpannableStringBuilder(str);
if (str.contains(text)) {
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setTextSize(textSize);
}
}, str.indexOf(text), str.indexOf(text) + text.length(), 0);
}
return ssb;
}
<string name="confirm_msg">PLEASE %1$s second String</string>
txt.setText(setSpansize(String.format(getString(R.string.confirm_msg), "$" ),
String.valueOf("$" )));
答案 1 :(得分:1)
无需找出每个文本的高度。
public static int getHeight(Context context, CharSequence text, int textSize, int deviceWidth, Typeface typeface,int padding) {
TextView textView = new TextView(context);
textView.setPadding(padding,0,padding,padding);
textView.setTypeface(typeface);
textView.setText(text, TextView.BufferType.SPANNABLE);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(deviceWidth, View.MeasureSpec.AT_MOST);
int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
textView.measure(widthMeasureSpec, heightMeasureSpec);
return textView.getMeasuredHeight();
}