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.      }  
發佈了52 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章