2015-05-07 25 views
0

我有EditText它動態改變高度。所以我有一個編輯文本的問題..文本是隱藏的,請見截圖: enter image description hereEditText高度變化的煩惱

代碼:

final EditText editText = new EditText(getContext()); 
editText.setHint("?"); 

editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxAnswerLength.length())}); 
float measureText = editText.getPaint().measureText(maxAnswerLength); 
editText.setWidth(editText.getPaddingLeft() + editText.getPaddingRight() + (int) measureText); 
editText.setGravity(Gravity.CENTER); 
editText.setTextSize(TEXT_SIZE); 
editText.setSingleLine(true); 

addView(editText); 

editText.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 

    private int measuredHeight; 

    @Override 
    public void onGlobalLayout() { 
     if (measuredHeight == 0) { 
      ViewGroup.LayoutParams layoutParams = editText.getLayoutParams(); 
      measuredHeight = editText.getMeasuredHeight(); 
      layoutParams.height = measuredHeight/2; 
      editText.setLayoutParams(layoutParams); 
     } 
    } 
}); 

那麼,究竟哪裏做錯了?

佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/matcher_background" 
    android:orientation="vertical"> 

    <com.***.ui.customviews.EditableTextView 
     android:id="@+id/editable_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 
+0

您是否在'measuredHeight = editText.getMeasuredHeight();'中添加了斷點以檢查實際高度?另外,爲什麼不用'editText.getHeight()'來代替? – 4gus71n

+0

也請在此發佈佈局文件 –

+0

@astinx是的,大小不是0. editText.getHeight()不使用,因爲它返回0. – smail2133

回答

0

感謝所有。我發現這個問題的解決方案:

editText.setPadding(-5, -5, -5, -3); 

謝謝。