Мне сложно перепрограммировать атрибут maxLines
в TextView
.
Просто попробовал установить значение 0
и он не работает. -1
сбой приложения. Я мог бы использовать более простой способ обхода и установить maxLines
на 5000
но я не хочу этого делать.
Любые идеи, как это сделать?
ОБНОВЛЕНО
Ну, я нашел одну проблему. Я также установил Ellipsize … Я просто использую следующее обходное решение:
TextView questionDetail = (TextView) mQuestionDetailHeader.findViewById(R.id.desc); questionDetail.setText(mCurrentQuestion.getQuestion()); questionDetail.setMaxLines(Integer.MAX_VALUE); //As in the android sourcecode questionDetail.setEllipsize(null);
Поскольку еще нет одобренного ответа – правильный способ сброса свойства maxlines TextView:
textView.setMaxLines(Integer.MAX_VALUE);
В соответствии с комментарием Valdemar и этим ответом stackoverflow . Использование -1 приведет к ArrayIndexOutOfBoundsException
.
Имейте в виду, что только настройки END
и MARQEE
setEllipsize () будут соблюдаться для maxlines> = 2 в соответствии с документацией :
Если setMaxLines (int) используется для установки двух или более строк, END и MARQUEE * поддерживаются только (другие типы эллипсинга ничего не сделают).
-1
не должно разбивать ваше приложение. Это фактически то, что используется внутри TextView
по умолчанию:
case com.android.internal.R.styleable.TextView_maxLines: setMaxLines(a.getInt(attr, -1)); break;
Этот фрагмент кода показывает, что когда android:maxLines
не указывается, тогда код использует -1
для установки значения через setMaxLines()
.
Я также сделал тестовое приложение для проверки моих выводов. И он отлично работает без сбоев:
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); } }
Для установки maxLines для текста используйте mTextView.setMaxLines (0) или вам необходимо программно измерить текст высоты и умножить на число максимальной линии. Результат должен быть установлен как высота текстового
Если вы хотите иметь только одну строку, то почему бы вам не использовать:
txtView.setSingleLine(true);