Я пытаюсь ограничить 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 это просто то, что я использую сейчас, как я кода.
Не могу вам помочь, но: обратите внимание, что если пользователь поворачивать экран после ввода более чем на 3 линии, то вы будете иметь текст больше, чем 3 строки с оригинальным шрифтом, потому что весь пользовательский интерфейс перестроен. То же самое относится к другим случаям, когда ваша деятельность ui перерисовывается. Таким образом, вы должны обращаться с этим также в onCreate. –
Спасибо за головы! Я получу обходное решение для этого – zomgcopters
Извините ... моя ошибка. Реализация по умолчанию onRetainInstanceState e onRestoreInstanceState должна позаботиться об этом для вас! –