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