我正在编写一个简单的caesar-encryption-activity。屏幕上有两个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的程序,该程序以编程方式加密并填充了crypto-EditText。到现在为止还挺好。

当输入的明文真的很长时,明文-EditText随我的输入滚动,但crypto-EditText停留在文本的顶部。我真的希望crypto-EditText滚动,以便它始终显示其内容的底行。

如何做到这一点,最好是通过TextWatcher的onTextChanged()-Method实现?

最佳答案

好的,找到了。它是光标(在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

然后使用:
    ivCrypt.setText(aText);                               // assign the Text
    ivCrypt.setSelection(ivClear.getSelectionStart());    // scroll

终于,ew :)总是低估了Spannable的功能;)

10-07 19:35
查看更多