TextView中有两种字体的文本高度?[android]

时间:2013-10-25 10:01:47

标签: android fonts textview

我找不到解决方案。我的textview中的文字有两种字体:行间距`不同。

问题是:如果Textview包含具有两种行间距的文本,我如何获得每个文本的高度?

我使用了很多样本​​,但是我无法达到好的结果,Paint类的方法无法解决我的问题。

请帮助

2 个答案:

答案 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();
        }