您的位置:首页 > 移动开发 > Android开发

android---重写EditText自适应屏幕分辨率,压缩字体大小

2016-04-27 19:56 405 查看
因为Editview是继承Textview,所以重写EditText跟重写Textview的方法差不多,不过EditText使用此方法的目的是为了 让字体的高度不要超过控件的高度,否则输入的文字和提示文字显示不全。压缩的方式跟Textview差不多,不过这次做判断的是用到字体和控件的高度。

package com.example.myedittext;

import android.content.Context;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.util.Log;

import android.widget.EditText;

public class EditAutoResize extends EditText{

private static final float MIN_TEXT_SIZE = 25.0F;

private static final float MAX_TEXT_SIZE = 55.0F;

public EditAutoResize(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

public EditAutoResize(Context paramContext,

AttributeSet paramAttributeSet) {

super(paramContext, paramAttributeSet);

}

/**

 * 设置文字的大小

 */

public void resize()

{

//获得控件的宽度

int i = getHeight();

//获得字体的大小

float f1 = getTextSize();

//计算控件中文字的总长度

while (true) {

//字体最小控制在15.0F

while (true) {

setTextSize(0, f1);

//在最大值和最小值之间,正常压缩调整

if (MAX_TEXT_SIZE >= f1&&f1>=MIN_TEXT_SIZE)

{

break;

}

else

{

//超过最大程度

if(f1>MAX_TEXT_SIZE)

{

f1 = MAX_TEXT_SIZE;

}

//小于最小程度

if(f1<MIN_TEXT_SIZE)

{

f1 = MIN_TEXT_SIZE;

}

}

}

//如果i大于最大 小于最小,设置成最大或最小后退出

if(i>MAX_TEXT_SIZE&&i<MIN_TEXT_SIZE)

{

break;

}

//进行压缩

if(f1>i)

{

f1--;

}

else

{

break;

}

}

}

@Override

protected void onLayout(boolean paramBoolean, int paramInt1, int paramInt2,

int paramInt3, int paramInt4) {

super.onLayout(paramBoolean, paramInt1, paramInt2, paramInt3, paramInt4);

resize();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: