Программная прокрутка EditText
Я пишу простое действие "Цезарь-шифрование". Два EditTexts на экране, один открытый текст, один зашифрованный. Вот пример для зашифрованного EditText - открытый текст похож.
<EditText
android:layout_below="@id/Caesar_Label_CryptText"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/Caesar_Text_CryptText"
android:hint="Enter crypted text"
android:maxLines="2"
android:lines="2"
android:minLines="2"
android:inputType="text|textMultiLine|textVisiblePassword"
android:scrollbars="vertical"
android:gravity="top" />
Теперь при вводе открытого текста у меня работает TextChangedListener, который программно шифрует и заполняет этот crypto-EditText. Все идет нормально.
Когда введенный открытый текст становится действительно длинным, cleartext-EditText прокручивается с моим вводом, но crypto-EditText остается в верхней части текста. Мне бы очень хотелось, чтобы crypto-EditText прокручивался так, чтобы он всегда показывал нижнюю строку своего содержимого.
Как это можно сделать, предпочтительно из onTextChanged()- метода TextWatcher?
2 ответа
Хорошо, нашел это. Это был курсор (называемый Selection на EditText и TextViews).
Вот как я получил это на работу:
ivClear // assigned the EditText that has the input
ivCrypt // assigned the target EditText, that I want to scroll
aText // the input from ivClear, crypted
Тогда используйте:
ivCrypt.setText(aText); // assign the Text
ivCrypt.setSelection(ivClear.getSelectionStart()); // scroll
Фу, наконец-то:) Всегда недооценивал силу Spannable;)
Базовый класс android.view.View имеет методы getScrollX(), getScrollY() и scrollTo(), которые могут быть полезны, хотя я не пробовал.
http://developer.android.com/reference/android/view/View.html, int)