TextView的文本缩小到指定宽度 [英] TextView text shrink to the given width

查看:140
本文介绍了TextView的文本缩小到指定宽度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的活动一个TextView场。其字体大小为16。
它的文字是通过code设置。假设,如果我有一个大的文本,它应该缩小这个数据(即字体大小减少),而不是去到下一行。我该怎么办呢?

 < TextView的机器人:ID =@ + ID / TextView的机器人:layout_width =400dp机器人:layout_height =WRAP_CONTENT机器人:文本=机器人:TEXTSIZE = 16SP/>


解决方案

我用,我按照我的要求创建了以下方法得到它。

 私人无效autoScaleTextViewTextToHeight(TextView的电视)
    {
        字符串s = tv.getText()的toString()。
        浮currentWidth = tv.getPaint()measureText(多个)。        浮phoneDensity = this.getResources()getDisplayMetrics()密度。        而(currentWidth>(REQUIRED_WIDTH * phoneDensity)){
            tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,tv.getTextSize() - 1.0F);
            currentWidth = tv.getPaint()measureText(多个)。
        }
    }

I have a textview field in my activity. Its font size is 16. Its text is set through code. Suppose if I am having a big text, it should shrink this data (i.e. font size reduces) instead of going to the next line. How can I do it?

<TextView android:id="@+id/textView" android:layout_width="400dp" android:layout_height="wrap_content" android:text="" android:textSize="16sp" />

解决方案

I got it by using the following method which I created according to my requirement.

private void autoScaleTextViewTextToHeight(TextView tv)
    {
        String s = tv.getText().toString();
        float currentWidth = tv.getPaint().measureText(s);

        float phoneDensity = this.getResources().getDisplayMetrics().density;

        while(currentWidth > (REQUIRED_WIDTH * phoneDensity)) {         
            tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv.getTextSize() - 1.0f); 
            currentWidth = tv.getPaint().measureText(s);
        }
    }

这篇关于TextView的文本缩小到指定宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆