0
У меня есть EditText
, которые динамически меняют высоту. Поэтому у меня есть проблемы с редактированием текста .. Текст скрыт, смотрите скриншот: EditText проблемы с изменением высоты
Код:
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>
Вы добавили точку останова в 'measuredHeight = editText.getMeasuredHeight();', чтобы проверить фактическую высоту? Также почему бы вам не попробовать с помощью 'editText.getHeight()' вместо этого? – 4gus71n
также, пожалуйста, разместите файл макета здесь –
@astinx Да, размер не 0. editText.getHeight() не использовать, потому что он возвращается 0. – smail2133