2013-07-20 3 views
0

Я пытаюсь ограничить EditText, чтобы иметь максимум 3 строки, и если пользователь продолжает печатать, шрифт изменит размер, чтобы он соответствовал всем трем строкам.EditText динамически меняет размер текста, чередуясь между двумя размерами?

Однако, как только я получу 3 строки, он чередуется между исходным размером шрифта и вычисленным после каждого ввода на клавиатуре.

Вот что я делаю:

editText.addTextChangedListener(new TextWatcher() 
{ 
     private String inputText; 

     public void beforeTextChanged(CharSequence charSequence, int i,int i1, int i2) 
     {}; 

     public void onTextChanged(CharSequence charSequence, int i, int i1,int i2) 
     {}; 

     public void afterTextChanged(Editable ed) 
     { 
      int lineCount = editText.getLineCount(); 

      if(lineCount>=3) 
      editText.setTextSize((float) 45/lineCount); 
     }; 

Где 45 это просто то, что я использую сейчас, как я кода.

+0

Не могу вам помочь, но: обратите внимание, что если пользователь поворачивать экран после ввода более чем на 3 линии, то вы будете иметь текст больше, чем 3 строки с оригинальным шрифтом, потому что весь пользовательский интерфейс перестроен. То же самое относится к другим случаям, когда ваша деятельность ui перерисовывается. Таким образом, вы должны обращаться с этим также в onCreate. –

+0

Спасибо за головы! Я получу обходное решение для этого – zomgcopters

+0

Извините ... моя ошибка. Реализация по умолчанию onRetainInstanceState e onRestoreInstanceState должна позаботиться об этом для вас! –

ответ

0

Проблема была в знаке «> =» .... тьфу. Я теперь использую «>», чтобы рассказать, когда он проходит 3 и работает над обходным путем, чтобы уменьшить размер, исходя из того, сколько раз оно прошло> 3. Я пошлю свое исправление, когда оно закончится.

0

Это то, что я использую, чтобы ограничить до 1 строки и максимум 3 строки. Также оберните текст вокруг, когда он пересечет 1 строку.

android:minLines="1" 
android:maxLines="3" 
android:ellipsize="none" 
android:scrollHorizontally="false" 
android:text="sample text, a lot of text to encourage wrap text" 

 Смежные вопросы

  • Нет связанных вопросов^_^