1

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

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

我使用了很多示例,但我无法达到良好的效果,Paint 类的方法无法解决我的问题。

请提供任何帮助

4

2 回答 2

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("$" )));
于 2013-10-25T10:11:09.883 回答
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();
        }
于 2013-11-20T04:24:26.587 回答