我找不到解决方案。我的文本视图中的文本有两种字体:行间距不同。
问题是:如果 Textview 包含具有两种行距的文本,我如何获得每个文本的高度?
我使用了很多示例,但我无法达到良好的效果,Paint 类的方法无法解决我的问题。
请提供任何帮助
希望这会帮助你:
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("$" )));
无需找出每个文本的高度。
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();
}