button宽度固定,如果要显示的text很长,那么可能显示不全,这里想了一种方法,根据text的长度计算合适的textsize来显示,下面是代码
- package com.example.utils;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Paint;
- import android.util.Log;
- import android.util.TypedValue;
- import android.widget.Button;
- public class AutofitButton extends Button {
- public AutofitButton(Context context) {
- super(context);
- }
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- autoFitTextSize();
- }
- private void autoFitTextSize() {
- Paint p = getPaint();
- p.setTypeface(getTypeface());
- p.setTextSize(getTextSize());
- float needWidth = getPaddingLeft()+getPaddingRight()+p.measureText(getText().toString());
- if (needWidth > getWidth()) {
- setTextSize(TypedValue.COMPLEX_UNIT_PX, getTextSize()-0.5f);
- autoFitTextSize();
- }
- }
- }
这里需要注意的是setTextSize的时候一定要指定单位为px
原文地址:点击打开链接