Android固定宽度文字自适应大小

今天遇到一个问题,如下图

Android固定宽度文字自适应大小_第1张图片

图中间的两个数字,如果数字过大时换行呢?还是假省略号呢?

加省略号会让用户看不到完整信息

而换行则会造成界面变形,影响美观


想了一个办法,就是动态设计字体大小,android基础好的童鞋应该都会写,不多说了,我上代码先


首先获取屏幕宽度,计算数字两边的padding

float padding = 50;//px
float maxWidth = (getResources().getDisplayMetrics().widthPixels - padding*2)/2;


然后再写一个方法,动态修改TextView的字体大小

    private void reSizeTextView(TextView textView, String text, float maxWidth){
        Paint paint = textView.getPaint();
        float textWidth = paint.measureText(text);
        int textSizeInDp = 30;

        if(textWidth > maxWidth){
            for(;textSizeInDp > 0; textSizeInDp--){
                textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSizeInDp);
                paint = textView.getPaint();
                textWidth = paint.measureText(text);
                if(textWidth <= maxWidth){
                    break;
                }
            }
        }
        textView.invalidate();
    }

TypeValue.COMPLEX_UNIT_DIP用于控制设置大小的单位

invalidate用于刷新界面,因为我发现尽管xml里面设置了gravity="center_vertical"最后文字也没居中。最后刷新一下就居中了。


是了,还有xml的代码:(id属性我就不写出来了)

                        

调用:

reSizeTextView(textViewl, numString, maxWidth);
tx_added_up_capital.setText(numString);

 
  



最后效果:

Android固定宽度文字自适应大小_第2张图片



你可能感兴趣的:(android)