Android EdiText超出设定高度自适应

哭虽然我还是个菜鸟,但是问这问题还被人取笑,感觉蓝瘦香菇鱼焖~~

所以,写了这篇来避免大家入坑

其实,确实也很简单,只需要在布局设定EditText的最小高度为你想设定的值大小,然后设定高为自适应就行了

代码如下:

     <EditText
            android:id="@+id/data"
            android:gravity="clip_vertical"
            android:textSize="@dimen/data_textSize"
            android:minHeight="@dimen/long_editText_height"
            android:textColor="@color/black"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />


这里的long_editText_height我设定为150dp,简单吧,但是我百度的方法可能不对吧,就是百度现在这个标题的,找不到解决方法,

所以才问人~~


还有一种方法,复杂一点:来自--http://blog.csdn.net/lang791534167/article/details/30542709

       

EditText自适应高度

在开发中做到一个表单页面,由很多EditText构成的,为了使页面尽量美观整齐,每个EditText都设置为固定高度,可是当过多的文字内容加载进来时,就会导致部分文字由于控件高度的原因显示不出来,如下图 标题行展示演示图片

由于数据时从数据库中加载,所以文字长度是不固定的,所以我们就可以根据文字长度来自动计算控件的高度,代码如下,其他控件也可依次类推


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.       * 根据文字内容计算重绘EditText的高度 
  3.       * 
  4.       * @param linearLayout 
  5.       *            父控件 
  6.       * @param editText 
  7.       *            文本控件 
  8.       * @param contents 
  9.       *            文字内容 
  10.       */  
  11.       private void caculateHeight ( final LinearLayout linearLayout ,  
  12.                  final EditText editText , final String contents) {  
  13.             // 监听控件绘制  
  14.             ViewTreeObserver vto = editText .getViewTreeObserver();  
  15.             vto.addOnPreDrawListener( new ViewTreeObserver .OnPreDrawListener() {  
  16.                  @Override  
  17.                  public boolean onPreDraw() {  
  18.                       Boolean hasMessured = (Boolean ) editText .getTag();  
  19.                       if ( hasMessured == false ) {  
  20.                             editText.setTag( true );  
  21.                             int width = editText.getWidth(); // 控件宽度  
  22.                             int height = editText.getHeight(); // 控件高度  
  23.                             if ( width != 0 && height != 0) {  
  24.                                  if (!TextUtils .isEmpty (contents )) {  
  25.                                       // 显示文字个数字数  
  26.                                       int len = contents .length();  
  27.                                       // 得到字体像素  
  28.                                       float px = editText .getTextSize();  
  29.                                       Log. i( "time" , "字体像素:" + px + ",控件宽度:" + width );  
  30.                                       double length = Math .floor (width / px ); // 能容纳字母个数  
  31.                                       if ( len > length) {  
  32.                                             int llWidth = linearLayout .getLayoutParams().width ;  
  33.                                             int offset = ( int) (len / length ); // 计算出需要行数  
  34.                                             linearLayout  
  35.                                                      .setLayoutParams( new LinearLayout .LayoutParams(  
  36.                                                                  llWidth, ( int) ( height + px  
  37.                                                                            * offset)));  
  38.                                      }  
  39.   
  40.                                 }  
  41.                            }  
  42.                      }  
  43.                       return true ;  
  44.                 }  
  45.            });  
  46.      }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值