Android 以编程方式滚动编辑文本

Android 以编程方式滚动编辑文本,android,android-widget,android-edittext,Android,Android Widget,Android Edittext,我正在写一个简单的凯撒加密活动。屏幕上有两个编辑文本,一个明文,一个加密。这里有一个加密的EditText的例子-cleartext是类似的 <EditText android:layout_below="@id/Caesar_Label_CryptText" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/Caesar_Te

我正在写一个简单的凯撒加密活动。屏幕上有两个编辑文本,一个明文,一个加密。这里有一个加密的EditText的例子-cleartext是类似的

<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滚动,以便它始终显示其内容的底线


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

基类android.view.view有getScrollX()、getScrollY()和scrollTo()方法,虽然我没有尝试过,但它们可能会有所帮助


,int)

好的,找到了。它是光标(在EditText和TextView上称为选择)

我就是这样让它工作的:

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

呸,最后:)总是低估了斯潘能的力量;)

有趣的问题。看起来这应该是可能的,但我翻遍了文档,什么也找不到。我试过了。我记录cleartext EditText的getScrollY()值。输入文本时,此值会增加。然后我在crypto EditText中使用相同的值scrollToY()作为开始。但第二版文本不会滚动。我调试了scrollTo(),但在下次调用scrollTo()时,视图中最初更改的mScrollY变量被重置为0。我目前怀疑光标位置是罪魁祸首。调查一下。