Подтвердить что ты не робот

Как программно отключить 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);
4b9b3361

Ответ 1

Поскольку еще нет одобренного ответа - правильный способ reset свойства maxlines TextView:

textView.setMaxLines(Integer.MAX_VALUE);

По Valdemar комментарий и этот fooobar.com/questions/138719/.... Использование -1 приведет к ArrayIndexOutOfBoundsException.

Помните, что только значения параметров END и MARQEE setEllipsize() будут соблюдаться для maxlines >= 2 в соответствии с документацией:

Если setMaxLines (int) используется для установки двух или более строк, END и MARQUEE * поддерживаются только (другие типы эллипсинга не будут делать что-нибудь).

Ответ 2

-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);    
    }
}

Ответ 3

Для установки maxLines для текста используйте mTextView.setMaxLines(0) или вам необходимо программно измерить текст высоты и умножить на число макс. строк Результат должен быть установлен как высота textView

Ответ 4

Если вы хотите иметь только одну строку, то почему бы вам не использовать:

    txtView.setSingleLine(true);