textview.getLineCount always 0 in android

Viewed 29230

I'm trying to dynamically resize my textview but getlinecount() method always returns me 0 even after settext() and invalidate(). I'm using the following code:

if (convertView == null) {
    convertView = lInflater.inflate(R.layout.listview, null);
    holder = new ViewHolder();
    holder.text2 = (TextView)convertView.findViewById(R.id.TextView02);
    convertView.setTag(holder);
} else {
    holder = (ViewHolder)convertView.getTag();
}

holder.text2.setText(arr2[position]);
holder.text2.invalidate();

int lineCnt = holder.text2.getLineCount();

holder is a static class as follows:

static class ViewHolder {
    TextView text2;
}

holder contains non null text2 and the content set is also non null.

7 Answers

I create an extension for simple use:

/**
 * Function for detect when layout completely configure.
 */
fun View.afterLayoutConfiguration(func: () -> Unit) {
    viewTreeObserver?.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
        override fun onGlobalLayout() {
            viewTreeObserver?.removeOnGlobalLayoutListener(this)
            func()
        }
    })
}

Example of use:

textView.afterLayoutConfiguration {
    val lineCount = textView.lineCount
    ...
}
Related