2015-05-07 5 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); 

Спасибо.

Смежные вопросы