Программная прокрутка EditText - PullRequest
4 голосов
/ 13 февраля 2010

Я пишу простое действие "Цезарь-шифрование". Два 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. Пока все хорошо.

Когда введенный открытый текст становится действительно длинным, текстовый текст EditText прокручивается с моим вводом, но crypto-EditText остается в начале текста. Мне бы очень хотелось, чтобы crypto-EditText прокручивался так, чтобы он всегда показывал нижнюю строку своего содержимого.

Как это можно сделать, предпочтительно из onTextChanged () - метода TextWatcher?

Ответы [ 2 ]

7 голосов
/ 14 февраля 2010

Хорошо, нашел это. Это был курсор (называемый 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;)

0 голосов
/ 13 февраля 2010

Базовый класс android.view.View имеет методы getScrollX (), getScrollY () и scrollTo (), которые могут быть полезны, хотя я не пробовал.

http://developer.android.com/reference/android/view/View.html#scrollTo(int, int)

...