以编程方式滚动EditText

rfl*_*xor 5 android android-widget android-edittext

我正在编写一个简单的caesar-encryption-activity.屏幕上有两个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" />
Run Code Online (Sandbox Code Playgroud)

现在当输入明文时,我有一个TextChangedListener以编程方式运行加密并填充加密的EditText.到现在为止还挺好.

当输入的明文变得非常长时,明文 - EditText会以我的输入滚动,但加密 - EditText会保留在文本的顶部.我真的很喜欢加密的EditText来滚动,所以它总是显示其内容的底线.

怎么做,最好是从onTextChanged() - TextWatcher的方法?

rfl*_*xor 9

好的,找到了.它是光标(在EditText和TextViews上称为Selection).

这就是我开始工作的方式:

ivClear    // assigned the EditText that has the input
ivCrypt    // assigned the target EditText, that I want to scroll
aText      // the input from ivClear, crypted
Run Code Online (Sandbox Code Playgroud)

然后使用:

    ivCrypt.setText(aText);                               // assign the Text
    ivCrypt.setSelection(ivClear.getSelectionStart());    // scroll
Run Code Online (Sandbox Code Playgroud)

Phew,最后:)总是低估了Spannable的力量;)