Это определенно боль. В моем случае мне не нужно было редактировать, поэтому я работал с TextView
, но, учитывая, что EditText
происходит от TextView
, вы должны использовать тот же подход. Я вложил в подкласс TextView
и реализовал onSizeChanged
для вызова нового слушателя, которого я назвал OnSizeChangedListener
. В прослушиватель вы можете позвонить getLineCount()
с действительными результатами.
TextView
:
/** Size change listening TextView. */
public class SizeChangeNotifyingTextView extends TextView {
/** Listener. */
private OnSizeChangeListener m_listener;
/**
* Creates a new Layout-notifying TextView.
* @param context Context.
* @param attrs Attributes.
*/
public SizeChangeNotifyingTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Adds a size change listener.
* @param listener Listener.
*/
public void setOnSizeChangedListener(OnSizeChangeListener listener) {
m_listener = listener;
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (m_listener != null) {
m_listener.onSizeChanged(w, h, oldw, oldh);
}
}
}