Intereting Posts
Слайд RecyclerView вверх по мере того, как вы прокручиваете его или пересказываете recyclerview вниз при прокрутке вниз IllegalStateException: не удается выполнить это действие после onSaveInstanceState с помощью ViewPager Как выделить TextView или LinearLayout при щелчке по нему? Как нарисовать границу в верхней части линейного макета Вызвано: android.os.NetworkOnMainThreadException Android: OutofMemoryError: размер растрового изображения превышает бюджет VM без причины, я могу видеть Как хэш строку в Android? Robolectric with Gradle: Ресурсы не найдены Перехватите экран входящих вызовов ОС Android и замените Построить ошибки с зависимостью XML с java-объектом в build.gradle для модификации Нижняя панель навигации Android Оболочка тестового кода Android с плагином JaCoCo Gradle Невозможно просмотреть отчет трассировки HTML, созданный инструментом Systrace в Android SDK Проект библиотеки Android использует declare-styleable – как скомпилировать? Управление скоростью MediaPlayer в Android

Как программно отключить TextView maxLines?

Мне сложно перепрограммировать атрибут 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); 

Solutions Collecting From Web of "Как программно отключить TextView maxLines?"

Поскольку еще нет одобренного ответа – правильный способ сброса свойства 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);