2010-02-13 5 views
3

Я пишу простую операцию кеширования-шифрования. Два EditTexts на экране, один четкий текст, один зашифрованный. Вот пример для зашифрованного EditText - простой текст аналогичен.Программная прокрутка 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, что склепы и программно наполняющие, что крипто-EditText. Все идет нормально.

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

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

+0

Интересный вопрос. Кажется, что это * должно быть возможно, но я ткнул через документы и ничего не мог найти. –

ответ

7

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

спасибо, это мне очень помогло! – Chris623

0

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

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

+0

Я пробовал это. Я регистрирую getScrollY() - значение моего cleartext-EditText. При вводе текста это значение увеличивается. Затем я прокручиваюToY() в крипто-EditText с тем же значением для начала. Но второй EditText не будет прокручиваться. Я отлаживал scrollTo(), но изначально измененная переменная mScrollY в представлении сбрасывается до 0 к моменту, когда я вызову scrollTo() в следующий раз. В настоящее время я подозреваю, что позиция курсора является виновником. Вглядываясь в это. – rflexor