I've solved this issue by checking how many lines does the TextView
have after onSizeChanged
finish, since only then you will have the real value of the number of lines.
First create an interface (you can define it on your desired Fragment/Activity
)
public interface OnCustomTextViewSizeChangedListener {
public void SizeChanged(int size);
}
Then create your custom TextView
, Override
onSizeChanged and create a function to define your listener.
public class CustomTextView extends TextView {
private OnCustomTextViewSizeChangedListener sizeChangeListener;
...
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
// TODO Auto-generated method stub
super.onSizeChanged(w, h, oldw, oldh);
if(this.sizeChangeListener != null){
this.sizeChangeListener.SizeChanged(getLineCount());
}
}
public void setSizeChangeListener( OnCustomTextViewSizeChangedListener listener){
this.sizeChangeListener = listener;
}
}
Then just create your listener on your Fragment/Activity
, define it for your desired TextView
and your good to go!
OnCustomTextViewSizeChangedListener textViewSizeChanged = new OnCustomTextViewSizeChangedListener() {
@Override
public void SizeChanged(int size) {
if(size == 2){
//Do your stuff here, like changing text size
}
}
}
PS: don't forget to change your layout to use your CustomTextView
Hope it helps!