I\'m having a hard time reseting the maxLines
attribute of a TextView
programmatically.
Just tried setting to 0
and it doesn\'t wo
if you want to have just a single line , then why don't you use:
txtView.setSingleLine(true);
For setting the maxLines for a text use mTextView.setMaxLines(0) or you have to programmatic-ally measure of the height text and multiply with the number of max line The result should set as the height of the textView
As there isn't yet an approved answer - the proper way to reset the maxlines property of the TextView is:
textView.setMaxLines(Integer.MAX_VALUE);
As per Valdemar's comment and this stackoverflow answer. Using -1 will cause an ArrayIndexOutOfBoundsException
.
Keep in mind only END
and MARQEE
setEllipsize() settings will be respected for maxlines >= 2 according to the documentation:
If setMaxLines(int) has been used to set two or more lines, END and MARQUEE* are only supported (other ellipsizing types will not do anything).
The -1
should not crash your application. This actually what is used inside TextView
by default:
case com.android.internal.R.styleable.TextView_maxLines:
setMaxLines(a.getInt(attr, -1));
break;
This piece of code shows, that when android:maxLines
is not specified, then code uses -1
to set the value via setMaxLines()
function.
I also made test application to verify my conclusions. And it works fine without crashing:
public class HelloWorld extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
TextView text = (TextView)findViewById(R.id.text);
text.setMaxLines(-1);
}
}