Android EdiText超出设定高度自适应

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

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

其实,确实也很简单,只需要在布局设定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都设置为固定高度,可是当过多的文字内容加载进来时,就会导致部分文字由于控件高度的原因显示不出来,如下图 标题行展示Android EdiText超出设定高度自适应_第1张图片

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


[java]  view plain  copy
 
  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.      }  

你可能感兴趣的:(Android基础篇)