In my app I have a screen where I display some text and then a photo. The text is variable in length (sometimes none at all, sometimes a lot), so I wanted to have it set up so the text never takes up more than a few lines (but can be scrolled) leaving enough room for the image below.
My view component for this part is created programatically, and I’ve adjusted the code to have the following (currently in my text-setting method, but the same thing happens if it’s in the initial view-create code)
public void SetDescription(String description)
{
mTxtDescription.setText(Html.fromHtml(description));
mTxtDescription.setClickable(true);
mTxtDescription.setMaxLines(5);
mTxtDescription.setLines(5); //this makes no difference either!
mTxtDescription.setSingleLine(false);
mTxtDescription.setScrollbarFadingEnabled(true);
mTxtDescription.setScrollBarStyle(VERTICAL);
mTxtDescription.setMovementMethod(ScrollingMovementMethod.getInstance());
mTxtDescription.invalidate(); //adding this made no difference...
}
However it doesn’t work- long text still fills the whole screen and the image has vanished due to being pushed down to a height of 0. How can I get the text to never be more than 5 lines?
Try removing the call to
setSingleLine. And usesetInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE). It’d also put this call before thesetMaxLinesandsetLinescall to be sure.Note:
setLinesoverrides the settings ofsetMaxLinesandsetMinLines.The
TextViewhas many issues surrounding the various calls to how it should display multiple, ellipses, etc.