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();
}
}
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();
}
}
相关文章推荐
- android---世界时区列表
- Android 批量上传图片进度回调
- android---对SharePreferences的封装
- android---瀑布流gridview
- android---防止ListView数据错乱的方法
- android---自定义数字选择器
- android---ScrollView中嵌套ListView
- Android ImageButton,Button,CheckBox等抢了原有View的点击事件 点击事件冲突问题
- android---后台代发短信
- android---service的启动,和activity的通信
- android---broadcastReceiver广播机制
- android---在ScrollView中嵌套ViewPager
- android---多线程(启动,暂停,终止)
- android---控件隐藏与显示动画
- android---图片获得与裁剪
- android---仿淘宝下单PopWindow
- Android 图片滤镜工具——高斯模糊
- android---下拉ListView(顺畅版)
- android---gesture手势识别类
- Android Wallpaper分析